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.