【问题标题】:GitLab CI cannot find module error (when it is in node_modules)GitLab CI 找不到模块错误(当它在 node_modules 中时)
【发布时间】:2020-05-06 10:41:48
【问题描述】:

我正在尝试运行连接到服务器上端点的 som 客户端测试,我正在使用 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"
}
}

还有我的 .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

来自 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.

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

【问题讨论】:

  • 可以添加错误堆栈跟踪吗?
  • @TristanDeoliveira 我现在做到了。
  • 对于任何在这里寻找答案的人,我从来没有找到过。只是为了让您知道。

标签: javascript gitlab gitlab-ci chai


【解决方案1】:

如果这可能是相关的,我的管道上有类似的问题。 我将 cache 配置从一个作业移到了全局,导致了这个配置:

    image: weboaks/node-karma-protractor-chrome
    
    cache:
        paths:
        - node_modules/
    
    stages:
      - test
      - release
      - postrelease
      - deploy
      - e2e

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

【讨论】:

  • 我无法再访问该项目,也无法测试它,因为它是在学校进行的,但我会留下问题,因为您的回答可能对其他人有所帮助。
【解决方案2】:

在管道缓存方面发生了与我类似的事情,在我的情况下,解决问题的方法似乎是通过 Gitlab UI 的“Clear Runner 缓存”。

Read this documentation in order to understand about what button i'm talking about

【讨论】:

    猜你喜欢
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 2016-11-22
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    相关资源
    最近更新 更多