【问题标题】:Local npm dependency broken since npm v5.5.1自 npm v5.5.1 以来,本地 npm 依赖被破坏
【发布时间】:2019-02-17 01:54:50
【问题描述】:

在我们的 package.json 中,我们使用文件符号来引用我们自己开发的私有模块,如下所示:

"dependencies": {
  "privateX": "file:////serverName/path/to/privateX",
  "privateY": "file:////serverName/path/to/privateY"
}

在 npm v4.2.0(使用 Node v7.10.1)之前,这一切正常。更新到 npm v5.5.1(使用 Node.js 8.9.0 LTS)后,我们无法再安装(npm install)它们并出现以下错误:

npm ERR! code ENOLOCAL
npm ERR! Could not install from "..\..\serverName\path\to\privateX" as it does not contain a package.json file.

我尝试了不同的方法,例如,也没有奏效:

  • “privateX”:“file://serverName/path/to/privateX”
  • “privateX”:“文件:\\\\serverName\\path\\to\\privateX”

npm cache clean --force 没有帮助。

仅将依赖项放在每台服务器上并使用相对路径才有效。但这是不切实际的:

  • “privateX”:“file://../../path/to/privateX”

当我们降级到 npm v4.2.0 或更低版本时,它会再次运行。自该版本导致中断对同一网络中另一台服务器的访问后发生了什么?或者,在 npm 5.x.x 及更高版本中,如何引用同一网络中另一台服务器上的依赖项?

我们的私有模块位于我们网络内的服务器上。所有服务器都在 Windows 上运行。

【问题讨论】:

    标签: node.js npm dependencies local


    【解决方案1】:

    我能找到的最简单的解决方法是使用已安装的驱动器而不是服务器名称或 UNC 路径。

    1. 创建一个挂载的驱动器,例如 G:,引用 serverName
    2. 更改所有私有模块的 package.json 中的模块依赖关系。

      "privateX": "file://G:/path/to/privateX"
      

    这不是最好的解决方案,但它确实有效。适用于本地和全球安装。

    【讨论】:

      猜你喜欢
      • 2014-08-12
      • 2017-04-08
      • 1970-01-01
      • 2018-10-23
      • 2015-05-19
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      • 2018-10-17
      相关资源
      最近更新 更多