npm链接本地模块后,npm安装导致错误:未找到

时间:2018-08-01 19:37:07

标签: npm node-modules npm-link

module-A的package.json将模块B列为依赖项

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

模块B是本地模块,已成功从模块A与npm link链接。编译/运行一切正常。

但是,当我尝试使用npm install something在模块A中安装任何新模块,或者只是运行npm installnpm uninstall something时,总是会从npm收到本地模块(即npm)的错误消息。找不到链接。

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

我按照建议的here检查了两个模块中main中的package.json属性。有几个类似的问题,但似乎没有一个完全是这个问题或提供了可行的解决方案。

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

我使用npm 6.1.0

编辑:嗯,这可能很关键吗? @ mynamespace / module-b在NPM注册表中尚不存在,仅在本地

4 个答案:

答案 0 :(得分:4)

  

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

不幸的是,这是唯一可行的方法。如果您仅指定版本( ie npm install"@mynamespace/module-b": "^0.0.1",),"*"将始终搜索npm注册表,因此运行npm install将覆盖您拥有的版本在项目的node_modules中,以及在npm注册表中找到的内容(在这种情况下,则抛出404)。

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

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

我希望这会有所帮助。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

在这里OP。我最近switched to yarn,它与npm非常兼容。 Yarn有一个叫做workspaces的东西,可以更好地处理整个链接问题。自从切换以来,Hav没有任何上述问题。

答案 3 :(得分:0)

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

相关问题