最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何有条件地使用开发或生产环境变量

IT培训 admin 2浏览 0评论

如何有条件地使用开发或生产环境变量

当我开始我节点应用我收到此错误:

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;
发布评论

评论列表 (0)

  1. 暂无评论