如何有条件地使用开发或生产环境变量
当我开始我节点应用我收到此错误:
ReferenceError: DEV_MAIL_HOST is not defined
下面的代码工作,当我明确定义要使用的环境变量。
const transport = nodemailer.createTransport({
host: process.env.DEV_MAIL_HOST,
port: process.env.DEV_MAIL_PORT,
auth: {
user: process.env.DEV_MAIL_USER,
pass: process.env.DEV_MAIL_PASSWORD
}
});
不过,我想基于什么模式的节点在启动有条件注入ENV变量。
const transport = nodemailer.createTransport({
host: process.env.NODE_ENV === "development" ? DEV_MAIL_HOST : LIVE_MAIL_HOST,
port: process.env.NODE_ENV === "development" ? DEV_MAIL_PORT : LIVE_MAIL_PORT,
auth: {
user:
process.env.NODE_ENV === "development" ? DEV_MAIL_USER : LIVE_MAIL_USER,
pass:
process.env.NODE_ENV === "development"
? DEV_MAIL_PASSWORD
: LIVE_MAIL_PASSWORD
}
});
这里的是我的package.json,在那里我定义开始的模式。
}
"scripts": {
"start": "nodemon -e js,graphql -x NODE_ENV=production node src/index.js",
"dev": "nodemon -e js,graphql -x NODE_ENV=development node --inspect src/index.js",
}
}
我缺少的是在这里吗?
固定感谢@ MadWard的评论。我需要我的解构环境变量。
回答如下:无论从片段和所显示的错误,你似乎是使用变量,而无需首先声明它们。
无论是他们的全名(process.env.DEV_MAIL_HOST
等)直接使用的变量,或者在你的代码的开头初始化它们:
const {
DEV_MAIL_HOST,
DEV_MAIL_PORT,
DEV_MAIL_USER,
DEV_MAIL_PASSWORD,
LIVE_MAIL_HOST,
LIVE_MAIL_PORT,
LIVE_MAIL_USER,
LIVE_MAIL_PASSWORD
} = process.env;
如何有条件地使用开发或生产环境变量
当我开始我节点应用我收到此错误:
ReferenceError: DEV_MAIL_HOST is not defined
下面的代码工作,当我明确定义要使用的环境变量。
const transport = nodemailer.createTransport({
host: process.env.DEV_MAIL_HOST,
port: process.env.DEV_MAIL_PORT,
auth: {
user: process.env.DEV_MAIL_USER,
pass: process.env.DEV_MAIL_PASSWORD
}
});
不过,我想基于什么模式的节点在启动有条件注入ENV变量。
const transport = nodemailer.createTransport({
host: process.env.NODE_ENV === "development" ? DEV_MAIL_HOST : LIVE_MAIL_HOST,
port: process.env.NODE_ENV === "development" ? DEV_MAIL_PORT : LIVE_MAIL_PORT,
auth: {
user:
process.env.NODE_ENV === "development" ? DEV_MAIL_USER : LIVE_MAIL_USER,
pass:
process.env.NODE_ENV === "development"
? DEV_MAIL_PASSWORD
: LIVE_MAIL_PASSWORD
}
});
这里的是我的package.json,在那里我定义开始的模式。
}
"scripts": {
"start": "nodemon -e js,graphql -x NODE_ENV=production node src/index.js",
"dev": "nodemon -e js,graphql -x NODE_ENV=development node --inspect src/index.js",
}
}
我缺少的是在这里吗?
固定感谢@ MadWard的评论。我需要我的解构环境变量。
回答如下:无论从片段和所显示的错误,你似乎是使用变量,而无需首先声明它们。
无论是他们的全名(process.env.DEV_MAIL_HOST
等)直接使用的变量,或者在你的代码的开头初始化它们:
const {
DEV_MAIL_HOST,
DEV_MAIL_PORT,
DEV_MAIL_USER,
DEV_MAIL_PASSWORD,
LIVE_MAIL_HOST,
LIVE_MAIL_PORT,
LIVE_MAIL_USER,
LIVE_MAIL_PASSWORD
} = process.env;