【问题标题】:NPM not creating .bin directoryNPM 没有创建 .bin 目录
【发布时间】:2014-04-16 02:37:30
【问题描述】:

我在 Mac OS X 10.9.2 上使用 npm v1.4.4node v0.10.25

我最近升级了 node 和 npm,现在npm install 不再在 node_modules 中创建 .bin 目录。

我已删除 node_modules,再次尝试npm install,但从未创建目录和二进制文件。

有人知道为什么会这样吗?

这是我的package.json

{
  "name": "redacted",
  "author": {},
  "description": "redacted",
  "dependencies": {
  },
  "devDependencies": {
    "karma": "*",
    "karma-coverage": "0.1.2",
    "karma-junit-reporter": "*",
    "karma-coffee-preprocessor": "~0.1",
    "grunt": "^0.4.2",
    "grunt-contrib-requirejs": "^0.4.3",
    "grunt-contrib-concat": "^0.3.0",
    "grunt-contrib-sass": "^0.7.2",
    "grunt-contrib-htmlmin": "^0.2.0",
    "grunt-contrib-cssmin": "^0.7.0",
    "grunt-contrib-coffee": "^0.10.1",
    "grunt-contrib-uglify": "^0.3.3",
    "grunt-contrib-jst": "^0.5.1",
    "grunt-contrib-qunit": "^0.4.0",
    "grunt-contrib-jshint": "^0.8.0",
    "grunt-contrib-watch": "^0.5.3",
    "grunt-contrib-jasmine": "^0.6.1",
    "grunt-contrib-compress": "^0.6.1",
    "grunt-contrib-handlebars": "^0.6.1",
    "grunt-contrib-less": "^0.9.0",
    "grunt-contrib": "^0.9.0"
  }
}

【问题讨论】:

  • 你能分享你的package.json吗?
  • 我已更新问题以包含 package.json 内容。
  • 快速破解:ls node_modules | xargs -n1 npm install
  • 我遇到了这个问题,因为我的磁盘内存已满
  • 您找到解决方案了吗?在 Jenkins 构建期间运行调用 npm install 时遇到此问题。构建代理是一个 Docker 容器,在从主机挂载的目录中调用 npm install。这些因素中的任何一个是否会导致 node_modules/.bin 创建静默失败?

标签: node.js macos npm


【解决方案1】:

我知道这是一篇旧帖子,但我最近遇到了同样的问题。我从现有项目中复制了文件,包括package.jsonpackage-lock.jsonpackage-lock.json 是阻止创建 node_module/.bin 目录的原因。 解决办法是删除node_modules目录和package-lock.json,再次运行npm install

【讨论】:

  • 为我做到了!谢谢
  • 谁知道package-lock.json 会干扰node_modules/.bin/ 的正确生成?!做得好!我的 npm install 在只构建了 50% 的 .bin 后会失败,因此当执行其他运行脚本时,二进制文件会丢失。太奇怪了!删除 node_modulespackage-lock.json 并且 BAM 成功了!谢谢!!!
  • 太棒了!我删除了 package-lock.json,但没有删除 node_modules。然后在这里看到你的答案并删除了两者,现在它可以工作了!谢谢!!
【解决方案2】:

似乎您所有的依赖项都是 dev 依赖项。 你能看看你的NODE_ENV 环境变量现在是否设置为production 吗?如果是,则需要将其更改回来。

另外,安装过程中发生了什么错误吗?

【讨论】:

  • NODE_ENV 为空。如果我将它们移动到依赖项,或者使用 --dev,结果是一样的 - 没有 .bin 目录。完全没有错误,一切看起来都很好。
  • 你试过从一个干净的项目开始吗?也看看这是否有帮助:github.com/npm/npm/issues/2566
  • 新项目的行为方式相同。这是我在尝试诊断问题时发现的第一个链接。它没有帮助。
【解决方案3】:

./node_modules/.bin 目录是npm 创建指向节点包二进制文件的链接的位置。来自https://docs.npmjs.com/files/folders#executables

可执行文件

在全局模式下,可执行文件链接到 {prefix}/bin 在 Unix 上,或直接进入 {prefix} 在 Windows 上。

在本地模式下,可执行文件被链接到 ./node_modules/.bin 所以 它们可以用于通过 npm 运行的脚本。 (为了 例如,当您运行 npm 时,测试运行程序将在路径中 测试。)


您在上面粘贴的package.json 没有bin 部分。从npmpackage.json看这个例子

{
  "version": "1.4.9",
  "name": "npm",
  "publishConfig": {
    "proprietary-attribs": false
  },
  "description": "A package manager for node",
  ...
  ...
  "main": "./lib/npm.js",
  "bin": "./bin/npm-cli.js",
  "dependencies": {
    "abbrev": "~1.0.4",
    "ansi": "~0.2.1",
    ...
    ...

具体而言,"bin": "./bin/npm-cli.js" 行将告诉npm./node_modules/.bin/npm 创建到node_modules/npm/npm-cli.js 的链接

【讨论】:

  • 可能其中一个依赖项确实创建了node_module/.bin——难道 grunt 和 karma 都不会这样做吗?
  • package.json 需要 bin 部分。 .bin 目录仍应创建。
  • 此答案中引用的链接已损坏,我似乎在实际文档中找不到任何条目来解释 npm 如何处理二进制文件和 .bin 文件夹。对于任何对此不熟悉的人来说,这都是一个进入障碍。关于我在哪里可以找到有关这方面的适当文档的任何想法?
  • 哦,不用担心,我找到了:docs.npmjs.com/files/folders#executables
  • @Auspex 否,package.json 不需要 bin 部分。运行npm init 并安装一些东西,你会看到。
【解决方案4】:

就我而言,webpack 在另一个控制台窗口中以监视模式运行。我在npm install 期间没有收到任何错误,所以我花了一点时间才注意到。

  1. 确保未使用依赖项,例如 karma 运行测试或 webpack 在监视模式下运行
  2. 删除依赖文件夹,如node_modules/karma,或整个node_modules文件夹。如果依赖文件夹已经存在,NPM 似乎不会在 .bin 文件夹中创建符号链接文件。
  3. 重试npm install

使用 NPM 6.7.0。

【讨论】:

  • 有时只需要炸掉整个node_modules 文件夹就可以正常工作...
【解决方案5】:

这可能是由于 npm 损坏而发生的。尝试从npm troubleshooting 执行以下命令,它应该可以正常工作。

curl -L https://www.npmjs.org/install.sh | sh

【讨论】:

    【解决方案6】:

    不是你的问题的真正答案,而是因为我有类似的情况:我在我的 VM 上使用--no-bin-links 选项运行 npm,所以我的 Windows 主机不会抱怨。然后后来我没有找到 bin 链接文件夹......呃!

    【讨论】:

      【解决方案7】:

      如果安装了所有软件包,则只​​有 .bin 消失了。

      你可以运行npm rebuild

      【讨论】:

        猜你喜欢
        • 2016-05-03
        • 2015-04-22
        • 1970-01-01
        • 2021-11-16
        • 2016-11-06
        • 2020-10-10
        • 2019-03-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多