妖孽,现出你的原型:
$ npm install
npm ERR! code ELOCKVERIFY
npm ERR! Errors were found in your package-lock.json, run npm install to fix them.
npm ERR! Missing: test-api@git+ssh://[email protected]/yardstrong/test-api.git
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\YUAN\AppData\Roaming\npm-cache\_logs\2019-02-12T09_01_08_931Z-debug.log
查看 “2019-02-12T09_01_08_931Z-debug.log” 日志文件
verbose npm-session 7f36f1b9f62333b4
5 verbose stack Error: Errors were found in your package-lock.json, run npm install to fix them.
5 verbose stack Missing: test-api@git+ssh://[email protected]/yardstrong/test-api.git
5 verbose stack at lockVerify.then (E:\nodejs\node_modules\npm\lib\audit.js:163:19)
6 verbose cwd E:\workspace\wNodejs\app
7 verbose Windows_NT 10.0.17134
8 verbose argv "E:\\nodejs\\node.exe" "E:\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "audit" "fix"
9 verbose node v6.10.1
10 verbose npm v6.4.1
11 error code ELOCKVERIFY
12 error Errors were found in your package-lock.json, run npm install to fix them.
12 error Missing: test-api@git+ssh://[email protected]/yardstrong/test-api.git
13 verbose exit [ 1, true ]
我在项目中引入了自己写的一个module,并将代码存储在自建Git中,
首先通过将模块依赖加入到 package.json :
{
"dependencies": {
"test-api": "git+ssh://[email protected]/yardstrong/test-api.git"
}
}
然后安装 npm install
,之后就报错了
测试网络和ssh,尝试将其拉取代码
$ git clone ssh://[email protected]/yardstrong/test-api.git
成功了下来,可以排除 网络问题 和 SSH连接问题
之后经过一系列无厘头尝试…最终将问题确定在module项目名称上了,
出错的原因是 “ssh://[email protected]/yardstrong/test-api.git” Git项目里 package.json 中 “name” 属性值不是 “test-api”,然后将其改成 “test-api” 即可
将 “ssh://[email protected]/yardstrong/test-api.git” 中 package.json 文件的 “name” 属性的值改成和
{
"dependencies": {
"test-api": "git+ssh://[email protected]/yardstrong/test-api.git"
}
}
依赖信息中的前边名字( “test-api” )保持一致,这样项目构建完成后会将 “ssh://[email protected]/yardstrong/test-api.git” 项目的代码打包到 node_modules 下的 test-api 文件中,
成为新项目中的一个module。
这个问题在 npm 老版本不会报错,会直接将 “ssh://[email protected]/yardstrong/test-api.git” Git项目(假设其package.json 中name属性值为 AAAAAAAAAA)打包到 node_modules 下的AAAAAAAAAA文件夹中,高版本中这个名称必须和父项目中”dependencies“属性的名称保持一致