GitLab CI 找不到模块错误(当它位于 node_modules 中时)

XBu*_*123 5 javascript gitlab chai gitlab-ci

chai.require("server.js")我正在尝试运行一些客户端测试,这些测试连接到我用来设置的服务器上的端点。这在我的本地计算机上有效,但是当我尝试在 GitLab CI 上运行它时,它失败并说它无法在 server.js 文件中找到模块,即使它们存在于 node_modules 中(我打印了这些,并检查了确切的它要求的一个)。我还移动了 server.js 中的 require-s,它总是在第一个上失败/在所有上都失败。

这是我的 package.json 文件的相关部分

{
"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"
}
}
Run Code Online (Sandbox Code Playgroud)

还有我的 .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
Run Code Online (Sandbox Code Playgroud)

CI 作业的错误堆栈跟踪:

client@0.1.0 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.
Run Code Online (Sandbox Code Playgroud)

重申一下,正是chai.require('server.js')再次运行导入导致 CI​​ 崩溃,这在我的机器上运行。感谢您的任何答复。

Ala*_*ard 2

如果这可能相关,那么我的管道上也有类似的问题。我将缓存配置从作业移至全局,导致此conf:

    image: weboaks/node-karma-protractor-chrome
    
    cache:
        paths:
        - node_modules/
    
    stages:
      - test
      - release
      - postrelease
      - deploy
      - e2e
Run Code Online (Sandbox Code Playgroud)

从多个作业运行 npm 命令时不再遇到问题。