【问题标题】:npm install after npm link-ing local module causes error: Not foundnpm 链接本地模块后的 npm install 导致错误:未找到
【发布时间】:2019-01-09 11:40:23
【问题描述】:

模块 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 的建议检查了两个模块中package.json 中的main 属性。有几个类似的问题,但似乎都不是这个问题或给出有效的解决方案。

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

我正在使用 npm 6.1.0

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

【问题讨论】:

    标签: npm node-modules npm-link


    【解决方案1】:

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

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

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

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

    我希望这会有所帮助。

    【讨论】:

    • 谢谢。我以前没看过那篇文章,所以很高兴听到确认没有其他方法。我可能会切换到相对文件路径。 Tnx!
    • npm 似乎完全不支持这样一个基本用例(针对本地版本的依赖项进行开发,但使用已发布的版本进行发布),这让我感到非常困惑。每个人真的只是不断地手动更改他们的package.json吗?!?
    • 好的答案,总是在你的npm link 之前做你的npm install
    • 这实际上帮助我理解了发生了什么。我有一个链接的包,但是在每次 npm 安装之后,该包都会抛出错误,因为它显然使用了 npm 注册表中的那个,所以我必须 npm install,再次链接我的包,甚至必须进入包并在那里运行 npm install
    【解决方案2】:

    如果你在 package.json 中添加一个“安装”脚本,Npm 可以自动完成,它会在 npm 安装之后运行。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        删除package-lock.json 然后运行npm link &lt;package_name&gt;&lt;local_package_path&gt; 修复了错误。

        【讨论】:

          猜你喜欢
          • 2015-02-26
          • 2016-01-17
          • 2014-05-25
          • 2016-12-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-31
          • 2015-12-16
          相关资源
          最近更新 更多