module-A的package.json将模块B列为依赖项
"dependencies": {
"@mynamespace/module-b": "^0.0.1",
模块B是本地模块,已成功从模块A与npm link
链接。编译/运行一切正常。
但是,当我尝试使用npm install something
在模块A中安装任何新模块,或者只是运行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
我按照建议的here检查了两个模块中main
中的package.json
属性。有几个类似的问题,但似乎没有一个完全是这个问题或提供了可行的解决方案。
现在,我手动从package.json中删除所有提及的链接模块,然后运行npm命令,然后将它们添加回package.json
我使用npm 6.1.0
编辑:嗯,这可能很关键吗? @ mynamespace / module-b在NPM注册表中尚不存在,仅在本地
答案 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>
修复了该错误。