因为 process.env.CI = true,将警告视为错误。编译失败。

61

我正在制作一款用于自学的react天气应用程序。已将其部署在gh-pages上。
URL
https://davisraimon.github.io/react-weather/
仓库
https://github.com/davisraimon/react-weather

尝试将我的应用程序与Travis Ci集成时,我遇到了以下错误。 它说我必须更改一个名为Process.env.CI的环境变量。

$ git clone --depth=50 --branch=master https://github.com/davisraimon/react-weather.git davisraimon/react-weather
nvm.install
4.18s$ nvm install stable
cache.1
Setting up build cache
cache.npm
$ node --version
v14.4.0
$ npm --version
6.14.5
$ nvm --version
0.35.3
install.npm
13.21s$ npm ci 
7.45s$ npm run build
> react-weather@0.1.0 build /home/travis/build/davisraimon/react-weather
> react-scripts build
Creating an optimized production build...
Treating warnings as errors because process.env.CI = true.
Most CI servers set it automatically.
Failed to compile.
./src/components/form.component.js
  Line 1:17:  'Component' is defined but never used  no-unused-vars
./src/App.js
  Line 2:8:    'logo' is defined but never used              no-unused-vars
  Line 8:7:    'API_key' is assigned a value but never used  no-unused-vars
  Line 37:5:   Expected a default case                       default-case
  Line 53:14:  Expected '===' and instead saw '=='           eqeqeq
  Line 69:20:  Expected '===' and instead saw '=='           eqeqeq
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! react-weather@0.1.0 build: `react-scripts build`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the react-weather@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!     /home/travis/.npm/_logs/2020-06-30T17_45_07_887Z-debug.log
The command "npm run build" exited with 1.
cache.2
store build cache

我在 .travis.yml 文件中添加了环境变量。

env:
    process.env.CI : false

仍然显示相同的错误。

有人可以帮我摆脱这种情况吗?


是的...当我这样做时,它会完美地运行。谢谢。 - Davis Raimon
对于未来的读者,process.env是包含所有环境变量的Node变量。在.travis.yml文件中,您应该只使用变量名称,例如CI,而不需要使用process.env - Code-Apprentice
16个回答

86
  "scripts": {
    "start": "react-scripts start",
    "build": "CI=false && react-scripts build",  // Add CI=False here
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },

运行得非常好。谢谢! - Mayank jain
无法工作,管道抱怨> CI=false && react-scripts build“CI”不被识别为内部或外部命令、可操作的程序或批处理文件。 - hungryMind
@hungryMind 这是在 Windows 上吗? - ENDEESA

31

对我来说,解决方案是:

env: 
  CI: false

6
在哪里添加这行代码? - Praveen M P

16

如果您必须从GitLab CICD流程中继续构建和部署,可以这样包含CI=false:

CI=false npm run build
或者
unset CI
npm run build

这里是一个完整的GitLab CI作业示例:

build-dev:
  environment: DEV
  image: node:16
  stage: build
  script:
    - npm install
    - CI=false npm run build
  only:
    - /^devrelease-.*$/
  tags:
    - docker
或者
build-dev:
  environment: DEV
  image: node:16
  stage: build
  script:
    - unset CI
    - npm install
    - npm run build
  only:
    - /^devrelease-.*$/
  tags:
    - docker
  

11
在我的特定情况下,我使用的是Netlify,所以我所做的就是在Netlify面板内设置环境变量:
  • 选择网站设置选项卡
  • 选择构建和部署
  • 向下滚动到环境变量并点击编辑变量
  • 使用Key = CI 和 Value = false进行填写
  • 按保存按钮并触发新的部署操作

enter image description here


9

对我来说,将 npm run build 替换为 CI='' npm run build 有效。


2

经过数小时的谷歌搜索,以下内容对于我在Azure Devops上的编程工作非常有效:

在你的package.json文件中:

"scripts": {
  ...
  "build": "set \"CI=false\" && react-scripts build"
}

注意: 转义引号 很重要!

2
这是由于您的CI服务器设置引起的(在我的情况下是Netlify)。按照以下步骤操作,您的问题将得到解决:
选择--> 站点设置选项卡
选择--> 构建和部署 向下滚动到环境变量,选择编辑变量 使用Key = CIValue = false填写它
清除缓存并重新部署

谢谢您的帮助 - 在使用Netlify时遇到了一些问题,经过一番折腾后,我发现“警告”导致构建完全失败,最终仔细研究了输出并看到了有关该标志的提及...错误输出更加详细。非常感谢您的帮助,让我解除了阻塞状态;P - twknab

2

按照以下步骤,您的问题将得到解决:

  • 选择“站点设置”选项卡
  • 选择“构建和部署”
  • 向下滚动到“环境变量”并选择“编辑变量”
  • 用Key = CI 和 Value = false填写
  • 按下清除缓存并重新部署

...然后就可以愉快地使用了。


1

如果您想在部署过程中处理测试,则需要使用CI=true,但可以通过通过package.json设置标志轻松实现(如果您的dockerfile已经设置了ENV CI=true,则可以将其删除)。

 "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "CI=true react-scripts test"
  }

1
如果您要部署到Windows服务器或使用PowerShell,可以像这样设置环境变量:
script:
  - $env:CI="false"
  - npm run build

或者:

$env:CI="false"; npm run build

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接