7

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

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

模块 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

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

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

我正在使用 npm 6.1.0

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

4

4 回答 4

10

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

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

假设你已经阅读了这篇文章,没有办法使用该npm link方法并且还运行npm install. 为此,您必须在主项目中明确写入本地包的路径package.json(然后在发布包时将其更改回来)。

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

我希望这有帮助。

于 2018-09-03T11:50:16.487 回答
4

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

"scripts": {
    "install": "npm link <your package>"
},
于 2019-07-09T07:58:20.420 回答
1

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

于 2020-06-17T20:39:39.547 回答
1

在这里。我最近切换到 yarn,它与 npm 非常兼容。Yarn 有一个叫做工作区的东西,它可以更好地处理整个链接问题。换了之后没有遇到过类似的问题。

于 2019-11-12T05:00:53.240 回答