Gitlab Pipeline报错:无法找到模块'../Models/User'求助
GitLab Pipeline 测试时找不到模块的排查与解决
问题重现
本地VS Code中运行所有测试均正常,但GitLab Pipeline执行npm run build-test-server时抛出模块找不到的错误:
$ npm run build-test-server > stava@1.0.0 build-test-server > cd server && npm install && npm test added 640 packages, and audited 641 packages in 18s 63 packages are looking for funding run `npm fund` for details found 0 vulnerabilities > stava_server@1.0.0 test > node_modules/mocha/bin/mocha.js tests/api.js --exit --timeout 5000 && jest --testPathPattern=server/tests --runInBand --detectOpenHandles Tue, 28 Feb 2023 22:25:52 GMT express-session deprecated req.secret; provide secret option at index.js:50:3 Error: Cannot find module '../Models/User' Require stack: - /builds/tdt4140-2023/landsby-1/gruppe-10/stava/server/Controllers/userController.js - /builds/tdt4140-2023/landsby-1/gruppe-10/stava/server/Routers/userRouter.js - /builds/tdt4140-2023/landsby-1/gruppe-10/stava/server/index.js - /builds/tdt4140-2023/landsby-1/gruppe-10/stava/server/tests/api.js at Module._resolveFilename (node:internal/modules/cjs/loader:1090:15) at Module._load (node:internal/modules/cjs/loader:934:27)
排查与解决方法
检查文件名大小写一致性
本地Windows/macOS系统默认大小写不敏感,但GitLab Runner使用的Linux系统是大小写严格区分的。确认server/Controllers/userController.js中引用的../Models/User,其对应的实际文件路径、文件名大小写完全匹配(比如是否实际是models/user.js),修正引用路径或文件名的大小写问题。确认文件已被Git追踪
检查项目根目录的.gitignore文件,确认server/Models目录或User.js文件未被排除。如果该文件未被Git追踪,执行git add server/Models/User.js并提交到仓库,确保GitLab Runner拉取代码时能获取到该文件。验证CI工作目录
在CI脚本中添加pwd命令查看当前工作目录,确认执行cd server前的路径是项目根目录,和本地执行环境一致。如果工作目录不符,调整CI脚本中的路径切换逻辑。清理CI的npm缓存
缓存异常可能导致依赖或文件加载问题,在CI脚本的npm install前添加缓存清理步骤:npm cache clean --force
内容的提问来源于stack exchange,提问作者Christian Veiby
相关产品推荐
相关产品推荐

