[英]Gitlab-CI: Nodejs application fails to build
I am using gitlab-ci to build a react application but the build stage always fails, on my local machine it works fine same thing on my deployment server but when using gitlab-ci it fails with我正在使用 gitlab-ci 构建一个 React 应用程序,但构建阶段总是失败,在我的本地机器上它在我的部署服务器上工作正常但在使用 gitlab-ci 时它失败了
Line 421:34: Expected '===' and instead saw '==' eqeqeq
Line 473:13: 'names' is assigned a value but never used no-unused-vars
Line 789:96: Expected '!==' and instead saw '!=' eqeqeq
Line 792:182: Expected '!==' and instead saw '!=' eqeqeq
Line 792:258: Expected '!==' and instead saw '!=' eqeqeq
Line 792:295: Expected '!==' and instead saw '!=' eqeqeq
Line 793:161: Expected '!==' and instead saw '!=' eqeqeq
Line 793:236: Expected '!==' and instead saw '!=' eqeqeq
Line 793:272: Expected '!==' and instead saw '!=' eqeqeq
Line 813:203: Style prop value must be an object react/style-prop-object
./src/components/login.component.js
Line 9:7: 'user' is assigned a value but never used no-unused-vars
Line 73:13: 'currentUser' is assigned a value but never used no-unused-vars
Line 73:26: 'showModeratorBoard' is assigned a value but never used no-unused-vars
Line 73:46: 'showAdminBoard' is assigned a value but never used no-unused-vars
Line 73:63: 'SuperAdmin' is assigned a value but never used no-unused-vars
Line 73:77: 'showAdminDirect' is assigned a value but never used no-unused-vars
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! react-jwt-auth@0.1.0 build: `react-scripts build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the react-jwt-auth@0.1.0 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /builds/tahar.benachour/endarh/.npm/_logs/2021-11-23T12_31_40_565Z-debug.log
Cleaning up file based variables
00:01
ERROR: Job failed: exit code 1
I tried different images but same error我尝试了不同的图像但同样的错误
my gitlab-ci.yml我的 gitlab-ci.yml
stages:
- setup
- build
- deployment
variables:
npm_config_cache: "$CI_PROJECT_DIR/.npm"
image: node:10
# This folder is cached between builds
.dependencies_cache:
cache:
key:
files:
- package-lock.json # A transformer en package-lock.json
paths:
- .npm
policy: pull
app-setup:
stage: setup
script:
- npm ci
- npm run build
extends: .dependencies_cache
cache:
policy: pull-push
artifacts:
expire_in: 2h
paths:
- .npm
- build/
Some additional details, I saved logs and build directory as artifact here is the log details一些额外的细节,我将日志和构建目录保存为工件这里是日志细节
0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/bin/node', '/usr/local/bin/npm', 'run', 'build' ]
2 info using npm@6.14.12
3 info using node@v10.24.1
4 verbose run-script [ 'prebuild', 'build', 'postbuild' ]
5 info lifecycle react-jwt-auth@0.1.0~prebuild: react-jwt-auth@0.1.0
6 info lifecycle react-jwt-auth@0.1.0~build: react-jwt-auth@0.1.0
7 verbose lifecycle react-jwt-auth@0.1.0~build: unsafe-perm in lifecycle true
8 verbose lifecycle react-jwt-auth@0.1.0~build: PATH: /usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/builds/tahar.benachour/endarh/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
9 verbose lifecycle react-jwt-auth@0.1.0~build: CWD: /builds/tahar.benachour/endarh
10 silly lifecycle react-jwt-auth@0.1.0~build: Args: [ '-c', 'react-scripts build' ]
11 silly lifecycle react-jwt-auth@0.1.0~build: Returned: code: 1 signal: null
12 info lifecycle react-jwt-auth@0.1.0~build: Failed to exec build script
13 verbose stack Error: react-jwt-auth@0.1.0 build: `react-scripts build`
13 verbose stack Exit status 1
13 verbose stack at EventEmitter.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16)
13 verbose stack at EventEmitter.emit (events.js:198:13)
13 verbose stack at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack at ChildProcess.emit (events.js:198:13)
13 verbose stack at maybeClose (internal/child_process.js:982:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5)
14 verbose pkgid react-jwt-auth@0.1.0
15 verbose cwd /builds/tahar.benachour/endarh
16 verbose Linux 5.4.0-90-generic
17 verbose argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "build"
18 verbose node v10.24.1
19 verbose npm v6.14.12
20 error code ELIFECYCLE
21 error errno 1
22 error react-jwt-auth@0.1.0 build: `react-scripts build`
22 error Exit status 1
23 error Failed at the react-jwt-auth@0.1.0 build script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]
the build directory and files are created successfully and it runs fine on my web server so to be honest I don't understand the pipeline failure perhaps as said related to lint and code quality构建目录和文件已成功创建,并且在我的 web 服务器上运行良好所以老实说,我不明白管道故障可能与 lint 和代码质量有关
Those are linter errors.这些是 linter 错误。 Check the npm scripts that are being executed (probabaly on
npm run build
) as this is probably running your linter and producing the errors.检查正在执行的 npm 脚本(可能在
npm run build
上),因为这可能正在运行您的 linter 并产生错误。
I would suggest you run the same thing locally and fix those:)我建议你在本地运行相同的东西并修复它们:)
This doesn't look related to GitLab at all这看起来与 GitLab 完全无关
I was able to solve my problem by adding我能够通过添加来解决我的问题
CI=false && react-scripts build
to my package.json CI=false && react-scripts build
到我的 package.json
"scripts": {
"start": "react-scripts start",
"build": "CI=false && react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
I recommend quite the opposite approach to your solution: setting CI=true
locally instead of setting it to false
for the production build.我推荐与您的解决方案完全相反的方法:在本地设置
CI=true
而不是在生产构建中将其设置为false
。 You can either change your "build"-script, or add CI=true
to your.env-file (create it at the root level of your project, if it doesn't exist).您可以更改“构建”脚本,或将
CI=true
添加到您的 .env 文件(如果不存在,请在项目的根级别创建它)。
Thereafter, you should fix the warnings you have (usage of ==
and unused variables).此后,您应该修复您的警告(使用
==
和未使用的变量)。
A senior colleague of me advises against suppressing the warnings with CI=false
, as javascript/typescript is not the most stable language and important warnings are hid.我的一位资深同事建议不要使用
CI=false
来抑制警告,因为 javascript/typescript 不是最稳定的语言并且隐藏了重要的警告。
Precisely your error shows, how useful warnings are disabled: The hidden problems of using ==
and !=
.准确地说,您的错误显示了禁用警告的有用程度:使用
==
和!=
的隐藏问题。 There is a reason why Douglas Crockford's calls them the "evil twins" in JavaScript: The Good Parts , which is laid out in great detail in this StackOverflow answer to the question "Which equals operator (== vs ===) should be used in JavaScript comparisons?".道格拉斯·克罗克福德 (Douglas Crockford) 在JavaScript 中称他们为“邪恶的双胞胎”是有原因的:好的部分,在这个StackOverflow对问题“应该使用哪个等于运算符(== vs ===)”的回答中有详细说明在 JavaScript 比较中?”。
In short: Avoid the usage of ==
and !=
as much as possible and stick with their good twins ===
and !==
.简而言之:尽可能避免使用
==
和!=
并坚持使用它们的双胞胎===
和!==
。 Example excerpt from the linked answer for illogical behaviour of the ==
operator:来自
==
运算符不合逻辑行为的链接答案的示例摘录:
'' == '0' // false
0 == '' // true
0 == '0' // true
false == 'false' // false
false == '0' // true
false == undefined // false
false == null // false
null == undefined // true
' \t\r\n ' == 0 // true
I ahd the same issue and used the "build": "CI=false && react-scripts build" and it worked for me我遇到了同样的问题并使用了 "build": "CI=false && react-scripts build" 它对我有用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.