在使用nestjs的打包,遇到一些问题,在此记录下来
设置多个环境变量
.env.development //对应端口号 2335
.env.production //对应端口号 2336
.env.test //对应端口号 2337
package.json
"scripts": {
"build": "nest build",
"dev": "nest start --watch",
"dev:test": "cross-env NODE_ENV=test nest start --watch",
"dev:prod": "cross-env NODE_ENV=production nest start --watch",
"start:debug": "nest start --debug --watch",
"start:build": "node dist/main.js",
"start:build:test": "cross-env NODE_ENV=test node dist/main.js",
"start:build:prod": "cross-env NODE_ENV=production node dist/main"
},
nestjs ==> 读取env文件
// 获取环境变量
const nodeEnv = process.env.NODE_ENV || 'development';
// 加载对应环境的配置文件
dotenv.config({
path: resolve(
process.cwd(),
nodeEnv === 'development' ? '.env.development' : `.env.${nodeEnv}`,
),
});
运行项目
npm run dev
npm run dev:prod
npm run dev:test
此时项目可以正常运行,环境变量也拿到正确的了
遇到的问题
不能按照特定的环境变量构建特定版本的包
如果出现.env文件,会造成打包之后的包设置环境变量不生效
解决方法
// 删除 .env文件
如果要跑特定版本的NODE_ENV
执行相关命令
"start:build:xxx": "cross-env NODE_ENV=xxxx node dist/main.js",