我在我的节点项目中使用package.json
下方和我运行时
npm test
,它会给出以下错误
模块版本不匹配。预计48,得到51
{
"name": "f-api",
"version": "0.0.1",
"Description": "F",
"author": "F",
"private": true,
"scripts": {
"start": "node ./bin/www",
"start_supervise": "supervisor ./bin/www",
"test": "mocha --recursive --timeout 10000"
},
"dependencies": {
"bcrypt": "=1.0.2",
"body-parser": "~1.13.2",
"config": "^1.24.0",
"cookie-parser": "~1.3.5",
"debug": "~2.2.0",
"express": "~4.13.1",
"jwt-simple": "^0.5.1",
"moment": "^2.17.1",
"morgan": "~1.6.1",
"nodemailer": "=2.7.2",
"nodemailer-smtp-transport": "^2.7.2",
"pg-promise": "^3.2.3",
"sequelize": "^3.29.0",
"sequelize-cli": "^2.1.0",
"supervisor": "^0.12.0"
},
"devDependencies": {
"chai": "^3.5.0",
"chai-http": "^3.0.0",
"mocha": "^3.2.0",
"nodemailer-stub": "^1.0.1",
"should": "^11.1.2",
"supertest": "^2.0.1"
}
}
我认为版本有些不兼容,我对node, npm
和^, ~, =
我将以下内容放入gitlab runner,docker executor
Running with gitlab-ci-multi-runner 1.11.1 (a67a225)
on gitlab-runner-b-ubuntuvm (1ffe18b1)
Using Docker executor with image node:6.10.0 ...
Starting service postgres:latest ...
Pulling docker image postgres:latest ...
Waiting for services to be up and running...
Pulling docker image node:6.10.0 ...
Running on runner-1ffe18b1-project-6-concurrent-0 via ubuntu...
Cloning repository...
Cloning into '/builds/f/f-api'...
Checking out bcf3e283 as development...
Skipping Git submodules setup
Downloading artifacts for build:linux (495)...
Downloading artifacts from coordinator... ok id=495 responseStatus=200 OK token=hXK-foh8
Checking cache for test:linux/development...
Successfully extracted cache
$ ./node_modules/.bin/sequelize db:migrate --env=continuous_integration
Sequelize [Node: 6.10.0, CLI: 2.5.1, ORM: 3.30.2]
Loaded configuration file "config_tmp.json".
== 20170120101655-createUserTable: migrating =======
== 20170120101655-createUserTable: migrated (0.031s)
== 20170120111051-addPasswordDigestToUsers: migrating =======
== 20170120111051-addPasswordDigestToUsers: migrated (0.026s)
== 20170226151953-update-users: migrating =======
== 20170226151953-update-users: migrated (0.047s)
== 20170307043733-update-users2: migrating =======
== 20170307043733-update-users2: migrated (0.049s)
== 20170308023252-create-profile: migrating =======
== 20170308023252-create-profile: migrated (0.027s)
== 20170308055218-update-users3-link-profile: migrating =======
== 20170308055218-update-users3-link-profile: migrated (0.017s)
$ npm test
npm info it worked if it ends with ok
npm info using npm@3.10.10
npm info using node@v6.10.0
npm info lifecycle f-api@0.0.1~pretest: f-api@0.0.1
npm info lifecycle f-api@0.0.1~test: f-api@0.0.1
> f-api@0.0.1 test /builds/f/f-api
> mocha --recursive --timeout 10000
module.js:597
return process.dlopen(module, path._makeLong(filename));
^
Error: Module version mismatch. Expected 48, got 51.
at Error (native)
at Object.Module._extensions..node (module.js:597:18)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/builds/focus/focus-api/node_modules/bcrypt/bcrypt.js:6:16)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/builds/focus/focus-api/app/helpers/auth_helper.js:1:78)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/builds/focus/focus-api/config/routes/users.js:4:21)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/builds/focus/focus-api/config/routes/index.js:4:15)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/builds/focus/focus-api/app.js:8:16)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/builds/focus/focus-api/test/integration/routes_auth_test.js:1:75)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at /builds/focus/focus-api/node_modules/mocha/lib/mocha.js:222:27
at Array.forEach (native)
at Mocha.loadFiles (/builds/focus/focus-api/node_modules/mocha/lib/mocha.js:219:14)
at Mocha.run (/builds/focus/focus-api/node_modules/mocha/lib/mocha.js:487:10)
at Object.<anonymous> (/builds/focus/focus-api/node_modules/mocha/bin/_mocha:459:18)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.runMain (module.js:604:10)
at run (bootstrap_node.js:394:7)
at startup (bootstrap_node.js:149:9)
at bootstrap_node.js:509:3
npm info lifecycle focus-api@0.0.1~test: Failed to exec test script
npm ERR! Test failed. See above for more details.
ERROR: Job failed: exit code 1
欣赏任何指向正确方向的指针,谢谢你的帮助!!!
答案 0 :(得分:2)
您如何运行该过程?
如果它可以帮助任何人,我们在通过pm2运行节点时也会遇到类似的问题,那么我们会收到此错误:错误:模块版本不匹配。预期为48,得到57
似乎数字是指NODE MODULE版本,48是节点6,57是节点8。
我们正在运行pm2进程,并且每个进程都指定要使用的特定节点版本。它们指向节点6版本,甚至认为我们当前的nvm使用版本为8.12。 (node.js版本8.12.0)
删除并重新启动PM2作业,创建了具有指向节点8.12的更新链接的任务,我们不再遇到该错误。
希望它对某人有帮助!
答案 1 :(得分:0)
我刚刚修复了版本,因此npm不会更新软件包 在这种情况下,package-lock将有所帮助