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

Fli*_*ion 3 npm node-modules npm-link

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

  "dependencies": {
    "@mynamespace/module-b": "^0.0.1",
Run Code Online (Sandbox Code Playgroud)

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

但是,当我尝试在模块A中安装任何新模块npm install something或只是运行时,npm install或者npm 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
Run Code Online (Sandbox Code Playgroud)

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

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

我正在使用npm 6.1.0

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

小智 6

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

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

假设你已经读过文章,也没有办法使用npm link方法,而且还能运行npm install。为此,您必须在主项目的目录中显式地写入本地程序包的路径package.json(然后在发布程序包时将其改回)。

“依赖关系”:{
  “ @ mynamespace / module-b”:“文件:../../ module-b”,
},

我希望这有帮助。

  • 我绝对感到困惑的是,这样的基本用例(针对依赖项的本地版本进行开发,但使用已发布版本进行发布)似乎完全不受 npm 支持。每个人真的只是不断地手动更改他们的“package.json”吗?!? (3认同)

小智 6

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

"scripts": {
    "install": "npm link <your package>"
},
Run Code Online (Sandbox Code Playgroud)