问题描述
在 app.module.ts 文件中,我使用了环境变量
imports: [
ConfigModule.forRoot({ envFilePath: [`./src/config/${process.env.NODE_ENV}.env`],isGlobal: true },),MongooseModule.forRoot(process.env.DATABASE_URL,{
useNewUrlParser: true,user: `${process.env.DATABASE_USER}`,pass: `${process.env.DATABASE_PASSWD}`,}),
当我在本地测试时它可以工作,但是当我构建它时,环境不起作用,那我该怎么办,想
我的 package.json 脚本
"build": "NODE_ENV=prod nest build",// the env not work
"start:dev": "NODE_ENV=dev nest start --watch",// it works
解决方法
build
因此 nest build
不运行代码,它运行编译器将 ts
文件转换为 js
文件,因此从来没有任何检查或评估process.env.WHATEVER
是什么,它只是从 ts
语法(包括所有类型)到可以被 js
解释的 node
语法的翻译。
start:dev
(映射到 nest start --watch
)是实际运行代码的部分,使用 node
作为 JavaScript 引擎。
你可能想要类似的东西
"start:dev:prod": "NODE_ENV=prod nest start --watch"
或者您可以将 Nest 在新项目中提供的 start:prod
命令修改为 NODE_ENV=prod node dist/main.js