nestjs 环境变量

348 阅读1分钟
在使用nestjs的打包,遇到一些问题,在此记录下来

设置多个环境变量

Snipaste_2024-05-11_16-55-09.png

.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

image.png

npm run dev:prod

image.png

npm run dev:test

image.png

此时项目可以正常运行,环境变量也拿到正确的了

遇到的问题

不能按照特定的环境变量构建特定版本的包

如果出现.env文件,会造成打包之后的包设置环境变量不生效

解决方法

// 删除 .env文件

如果要跑特定版本的NODE_ENV

执行相关命令

"start:build:xxx": "cross-env NODE_ENV=xxxx node dist/main.js",