npm install after npm link-ing local module causes error: Not found

npm install after npm link-ing local module causes error: Not found

模块 A 的

package.json 将模块 B 列为依赖项

  "dependencies": {
    "@mynamespace/module-b": "^0.0.1",

模块 B 是本地模块,使用 npm link 从模块 A 成功 linked。编译/运行宁事情一切顺利。

然而,当我尝试使用 npm install something 或 运行 npm installnpm uninstall something 在模块 A 中安装任何新模块时,我总是从 npm 得到错误找不到本地模块(npm link-ed)。

C:\web\module-b>npm install
npm ERR! code E404
npm ERR! 404 Not Found: @mynamespace/module-b@^0.0.1

我按照建议 here 检查了两个模块中 package.json 中的 main 属性。有几个类似的问题,但 none 似乎正是这个问题或给出了有效的解决方案。

现在我正在从 package.json 中手动删除所有提及的 linked 模块,然后我 运行 npm 命令,然后将它们添加回 package.json

我正在使用 npm 6.1.0

编辑:啊,这可能很重要? @mynamespace/module-b 在 NPM 注册表中尚不存在,仅存在于本地

Right now I'm manually removing all mentions of linked modules from package.json, then I run npm commands, and than I add them back to package.json

不幸的是,这是唯一可行的方法。如果你只指定一个版本(i.e "@mynamespace/module-b": "^0.0.1","*"),npm install 将始终搜索 npm 注册表,所以 运行ning npm install 将用它在 npm 注册表中找到的内容覆盖项目 node_modules 中的内容(或在这种情况下抛出 404)。

假设您已经阅读了 this 文章,没有办法使用 npm link 方法以及 运行 npm install。为此,您必须在主项目的 package.json 中显式写入本地包的路径(然后在您发布包后将其改回)。

"dependencies": {
  "@mynamespace/module-b": "file:../../module-b",
},

希望对您有所帮助。

如果您将 "install" 脚本添加到 package.json,Npm 可以自动执行此操作,该脚本会在 npm 安装后立即运行。

"scripts": {
    "install": "npm link <your package>"
},

OP在这里。我最近 switched to yarn, which is very compatible with npm. Yarn has a thing called workspaces 更好地处理了整个链接问题。自从切换后就没有出现过上述问题。

删除 package-lock.json 然后 运行 npm link <package_name><local_package_path> 修复了错误。