当我们在Jenkins服务器上运行build时,这个错误突然出现了。我们没有改变任何东西。
npm ERR! Linux 3.10.0-957.5.1.el7.x86_64
npm ERR! argv "/usr/bin/node" "/bin/npm" "install"
npm ERR! node v10.15.3
npm ERR! npm v3.10.10
npm ERR! path /var/lib/jenkins/workspace/node_modules/.staging/@types/datatables.net-2acd857c/package.json
npm ERR! code ENOTDIR
npm ERR! errno -20
npm ERR! syscall open
我们在Jenkins构建中突然出现了同样的错误。我们发现它是在特定模块上运行npm i
时引起的。
在我们的例子中,它是由于对一个使用包(@types/serve-static
)中的依赖包(@types/mime
)进行了更新而引起的。
因为项目是遗留的,我们不能更新任何包,所以为了解决这个问题,我们不得不阻止主包(@types/serve-static)
)获得依赖项("@types/mime" "*"
)的最新版本。
这样做的方法是通过在package.json
文件中声明特定的版本包,而不是让包自己安装依赖项
"@types/mime": "2.0.3"