自npm v5.5.1起打破了本地npm依赖性

时间:2018-09-12 12:14:24

标签: node.js npm dependencies local

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

@SuppressWarnings({ "element1", "element2" })
                   ^                      ^

在npm v4.2.0(带有Node v7.10.1的版本)之前,此方法均正常运行。在更新到npm v5.5.1(使用Node.js 8.9.0 LTS)之后,我们将无法再安装(npm安装)它们并出现以下错误:

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

我尝试了不同的方法,例如,这些方法也不起作用:

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

npm缓存清理--force 没有帮助。

仅将依赖项放在每台服务器上并使用相对路径有效。但这不可行:

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

当我们降级到npm v4.2.0或更低版本时,它将再次起作用。自该版本导致中断对同一网络中另一台服务器的访问以来发生了什么?或者在npm 5.x.x及更高版本中,该方法看起来如何引用对同一网络中另一台服务器的依赖关系?

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

1 个答案:

答案 0 :(得分:0)

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

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

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

这不是最佳解决方案,但它可以工作。本地和全局安装都可以。