问题1:关于build和build-sit请求的验证问题,同样使用相同的.env.production文件,但是请求结果不同,build必须使用验证,而build-sit不需要。
区别在于build-sit中设置了NODE_ENV=development,然后在next.config.js中进行环境判断,然后进行接口转发,因此prod环境和sit环境请求的接口不同。
#package.json
"build": "next build",
"build-sit": "cross-env NODE_ENV=development && next build",
//next.config.js
const isProd = process.env.NODE_ENV === "production";]
async rewrites() {
if (!isProd) {
//返回sit请求api
return []
}else{
//返回prod请求api
return []
}
}
问题2:build和build-sit使用的.env文件问题
具体参考https://nextjs.org/docs/messages/non-standard-node-env
因为next build都是默认为production环境,只有next dev使用的是development环境。因此build和build-sit使用的都是.env.production文件。对于gd和xg环境的区别在于github工作流中进行.env.production文件的覆盖。prod和sit环境的区别在于next.config.js中使用isProd进行区分然后进行请求的重定向
jobs:
prod_gz_docker_deployment:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v3
- name: copy env to .env.production
run: |
cat .envProd-GZ > .env.production
cat .env.production
因此在开发过程中使用新的变量来区分不同的环境,而尽量减少使用NODE_ENV,比如设置DEVE_ENV = "sit"来识别sit环境。
版权声明:本文为weixin_42498253原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。