Node.js E404尝试链接本地npm模块时

Node.js E404尝试链接本地npm模块时,node.js,npm,Node.js,Npm,我在尝试将本地模块与npm链接时遇到404错误 在本地模块目录中,它似乎正确地创建了全局链接: $ npm link /usr/local/lib/node_modules/my-module-name -> /Users/XXX/my-module-directory/my-module-name 但在这之后,当我尝试从其他项目目录链接此文件时,我得到一个404错误: $ npm link my-module-name npm ERR! code E404 npm ERR! 404 N

我在尝试将本地模块与
npm
链接时遇到404错误

在本地模块目录中,它似乎正确地创建了全局链接:

$ npm link
/usr/local/lib/node_modules/my-module-name -> /Users/XXX/my-module-directory/my-module-name
但在这之后,当我尝试从其他项目目录链接此文件时,我得到一个404错误:

$ npm link my-module-name
npm ERR! code E404
npm ERR! 404 Not Found: my-module-name@latest
我尝试取消模块链接并再次链接或更改版本,但没有成功

以下是完整日志:

0 info it worked if it ends with ok
1 verbose cli [ '/Users/XXX/.nvm/versions/node/v8.2.1/bin/node',
1 verbose cli   '/Users/XXX/.nvm/versions/node/v8.2.1/bin/npm',
1 verbose cli   'link',
1 verbose cli   'my-module-name' ]
2 info using npm@5.3.0
3 info using node@v8.2.1
4 verbose npm-session 7d82e8d8dc1bdc83
5 silly install loadCurrentTree
6 silly install readGlobalPackageData
7 http fetch GET 404 https://registry.npmjs.org/my-module-name 2304ms
8 silly fetchPackageMetaData error for my-module-name@latest 404 Not Found: my-module-name@latest
9 verbose stack Error: 404 Not Found: my-module-name@latest
9 verbose stack     at fetch.then.res (/Users/XXX/.nvm/versions/node/v8.2.1/lib/node_modules/npm/node_modules/pacote/lib/fetchers/registry/fetch.js:41:19)
9 verbose stack     at tryCatcher (/Users/XXX/.nvm/versions/node/v8.2.1/lib/node_modules/npm/node_modules/bluebird/js/release/util.js:16:23)
9 verbose stack     at Promise._settlePromiseFromHandler (/Users/XXX/.nvm/versions/node/v8.2.1/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:512:31)
9 verbose stack     at Promise._settlePromise (/Users/XXX/.nvm/versions/node/v8.2.1/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:569:18)
9 verbose stack     at Promise._settlePromise0 (/Users/XXX/.nvm/versions/node/v8.2.1/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:614:10)
9 verbose stack     at Promise._settlePromises (/Users/XXX/.nvm/versions/node/v8.2.1/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:693:18)
9 verbose stack     at Async._drainQueue (/Users/XXX/.nvm/versions/node/v8.2.1/lib/node_modules/npm/node_modules/bluebird/js/release/async.js:133:16)
9 verbose stack     at Async._drainQueues (/Users/XXX/.nvm/versions/node/v8.2.1/lib/node_modules/npm/node_modules/bluebird/js/release/async.js:143:10)
9 verbose stack     at Immediate.Async.drainQueues (/Users/XXX/.nvm/versions/node/v8.2.1/lib/node_modules/npm/node_modules/bluebird/js/release/async.js:17:14)
9 verbose stack     at runCallback (timers.js:781:20)
9 verbose stack     at tryOnImmediate (timers.js:743:5)
9 verbose stack     at processImmediate [as _immediateCallback] (timers.js:714:5)
10 verbose cwd /Users/XXX/my-project-directory
11 verbose Darwin 16.6.0
12 verbose argv "/Users/XXX/.nvm/versions/node/v8.2.1/bin/node" "/Users/XXX/.nvm/versions/node/v8.2.1/bin/npm" "link" "my-module-name"
13 verbose node v8.2.1
14 verbose npm  v5.3.0
15 error code E404
16 error 404 Not Found: my-module-name@latest
17 verbose exit [ 1, true ]

您正在使用NVM安装的Node.js版本运行
npm link my module name
,但您没有使用相同版本运行
npm link
(在模块目录中)


初始链接是在
/usr/local/lib/node_modules
中创建的,但是当您使用NVM时,每个node.js版本都有自己的“lib”目录,在您的示例
/Users/XXX/.NVM/versions/node/v8.2.1/lib/node_modules
中,这是一个不同的目录。

我遇到了与上述问题相同的情况,但我从未使用过nvm。此计算机新安装了windows,但只安装了一个版本的节点。为了让它更混乱,我可以在一个项目中链接我的自定义模块,但不能在另一个项目中链接(因为当它搜索npmjs.org时,我得到了404错误)。@ing0这很奇怪,特别是如果它适用于一个项目而不是另一个项目。遗憾的是,我对Windows中的Node了解不够,无法提供有关发生了什么事情的线索。我只是在键入此内容时意识到nvm不是Windows应用程序,但问题仍然是我只有一个版本的Node正在运行。已修复!我的一个链接模块正在使用另一个链接模块。我最终通过链接最深的模块解决了这个问题,然后在尝试链接链的任何更高层之前调用
npm dedupe
。我猜npm总是会尝试搜索npmjs.org,如果它在项目的node_模块目录中没有符号链接——这就是为什么你得到的错误是404。