javascript - GitLab CI kan inte hitta modulfelet (när den finns i node_modules)
Jag försöker köra några klient-sidesspecifika tester som ansluter till en endpoint på en server, vilket jag använder chai.require("server.js") för att ställa in. Detta fungerar på min lokala maskin, men när jag försöker köra det på GitLab CI misslyckas det och säger att det inte kan hitta modulerna inuti server.js-filen, även om de finns i node_modules (jag skrev ut dessa och kontrollerade för exakt den som den frågade efter). Jag flyttade också runt require-s i server.js, och det misslyckas alltid på den första/misslyckas på alla.
Detta är de relevanta delarna av min package.json-fil
{
"name": "client",
"version": "0.1.0",
"private": true
"dependencies": {
"axios": "^0.19.1",
"chai": "^4.2.0",
"chai-http": "^4.3.0",
"esm": "^3.2.25",
"mocha": "^7.0.0",
"mysql": "^2.17.1"
"react-scripts": "3.3.0",
"body-parser": "^1.19.0",
"cors": "^2.8.5",
"express": "^4.17.1",
"install": "^0.13.0",
"jest": "^24.9.0",
"node": "^13.5.0",
"npm": "^6.13.4",
"require": "^2.4.20"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "mocha --require esm \"src/**/*.test.js\"",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}, "devDependencies": {
"react-router-dom": "^5.1.2",
"jest": "^24.9.0"
}
}
Och min .gitlab-ci.yml:
image: node:13
Set up MySQL test-database
services:
- mysql:5.5
Configure test-database
variables:
MYSQL_DATABASE: supertestdb
MYSQL_ROOT_PASSWORD: secret
Install node libraries
before_script:
- cd application/client
- npm install
Run JEST test
run_tests:
stage: test
script:
- npm test
Felstackspårningen från CI-jobbet:
[email test /builds/williaj/harmoni-team-7/application/client
62 > mocha --require esm "src/**/*.test.js"
63 /builds/williaj/harmoni-team-7/application/server/src/server.js:1
64 Error: Cannot find module 'express'
65 Require stack:
66 - /builds/williaj/harmoni-team-7/application/server/src/server.js
67 - /builds/williaj/harmoni-team-
7/application/client/src/test/storeTests/cookies.test.js
68 - /builds/williaj/harmoni-team-
7/application/client/node_modules/mocha/lib/mocha.js
69 - /builds/williaj/harmoni-team-
7/application/client/node_modules/mocha/lib/cli/one-and-dones.js
70 - /builds/williaj/harmoni-team-
7/application/client/node_modules/mocha/lib/cli/options.js
71 - /builds/williaj/harmoni-team-
7/application/client/node_modules/mocha/lib/cli/cli.js
72 at Object.<anonymous> (/builds/williaj/harmoni-team-
7/application/server/src/server.js:1)
73 at Generator.next (<anonymous>)
74 at Object.Module._extensions..js
(internal/modules/cjs/loader.js:1164:10)
75 at Object.<anonymous> (/builds/williaj/harmoni-team-
7/application/client/src/test/storeTests/cookies.test.js:12:13)
76 at Generator.next (<anonymous>)
77 at Object.Module._extensions..js
(internal/modules/cjs/loader.js:1164:10)
78 at /builds/williaj/harmoni-team-
7/application/client/node_modules/mocha/lib/mocha.js:308:36
79 at Array.forEach (<anonymous>)
80 at Mocha.loadFiles (/builds/williaj/harmoni-team-
7/application/client/node_modules/mocha/lib/mocha.js:305:14)
81 at Mocha.run (/builds/williaj/harmoni-team-
7/application/client/node_modules/mocha/lib/mocha.js:846:10)
82 at Object.exports.singleRun (/builds/williaj/harmoni-team-
7/application/client/node_modules/mocha/lib/cli/run-helpers.js:108:16)
83 at exports.runMocha (/builds/williaj/harmoni-team-
7/application/client/node_modules/mocha/lib/cli/run-helpers.js:143:13)
84 at Object.exports.handler (/builds/williaj/harmoni-team-
7/application/client/node_modules/mocha/lib/cli/run.js:305:3)
85 at Object.runCommand (/builds/williaj/harmoni-team-
7/application/client/node_modules/yargs/lib/command.js:242:26)
86 at Object.parseArgs [as _parseArgs] (/builds/williaj/harmoni-team-
7/application/client/node_modules/yargs/yargs.js:1087:28)
87 at Object.parse (/builds/williaj/harmoni-team-
7/application/client/node_modules/yargs/yargs.js:566:25)
88 at Object.exports.main (/builds/williaj/harmoni-team-
7/application/client/node_modules/mocha/lib/cli/cli.js:68:6)
89 at Object.<anonymous> (/builds/williaj/harmoni-team-
7/application/client/node_modules/mocha/lib/cli/cli.js:73:11)
90 at Generator.next (<anonymous>)
91 at internal/main/run_main_module.js:17:47 {
92 code: 'MODULE_NOT_FOUND',
93 requireStack: [
94 '/builds/williaj/harmoni-team-7/application/server/src/server.js',
95 '/builds/williaj/harmoni-team-
7/application/client/src/test/storeTests/cookies.test.js',
96 '/builds/williaj/harmoni-team-
7/application/client/node_modules/mocha/lib/mocha.js',
97 '/builds/williaj/harmoni-team-
7/application/client/node_modules/mocha/lib/cli/one-and-dones.js',
98 '/builds/williaj/harmoni-team-
7/application/client/node_modules/mocha/lib/cli/options.js',
99 '/builds/williaj/harmoni-team-
7/application/client/node_modules/mocha/lib/cli/cli.js'
100 ]
101 }
102 npm ERR! Test failed. See above for more details.
Och för att upprepa, det är chai.require('server.js') som sedan igen kör importerna som kraschar CI, och detta körs på min maskin. Tacksam för alla svar.
Svar #1
Hände något liknande mig med pipeline-cachen, i mitt fall verkar det som att det som löste problemet var att "Rensa Runner-cachar" genom Gitlab-gränssnittet.
Läs denna dokumentation för att förstå vilken knapp jag pratar om
Svar #2
Om detta kan vara relevant, hade jag ett liknande problem på min pipeline. Jag flyttade cache-konfigurationen från ett jobb till den globala, vilket ledde till denna konfiguration:
image: weboaks/node-karma-protractor-chrome
cache:
paths:
- node_modules/
stages:
- test
- release
- postrelease
- deploy
- e2e
Jag hade inte längre problemet när jag körde npm-kommandot från flera jobb.
