Javascript 如何为多个环境设置环境变量?

Javascript 如何为多个环境设置环境变量?,javascript,reactjs,webpack,environment-variables,next.js,Javascript,Reactjs,Webpack,Environment Variables,Next.js,我有一个Next.js应用程序,目前我有这个Next.config.js设置,可以在本地工作时访问我的.env文件,这很好: // Initialize doteenv library require("dotenv").config(); module.exports = { webpack: config => { // Fixes npm packages that depend on `fs` module config.node = { fs:

我有一个Next.js应用程序,目前我有这个Next.config.js设置,可以在本地工作时访问我的.env文件,这很好:

// Initialize doteenv library
require("dotenv").config();

module.exports = {
  webpack: config => {
    // Fixes npm packages that depend on `fs` module
    config.node = {
      fs: "empty"
    };
    /**
     * Returns environment variables as an object
     */
    const env = Object.keys(process.env).reduce((acc, curr) => {
      acc[`process.env.${curr}`] = JSON.stringify(process.env[curr]);
      return acc;
    }, {});

    /** Allows you to create global constants which can be configured
     * at compile time, which in our case is our environment variables
     */
    config.plugins.push(new webpack.DefinePlugin(env));
    return config;
  }
};
但是,当应用程序构建在live(platform.sh)环境中时,我需要访问platform.sh变量,而不是.env变量。Platform.sh提供以下代码片段作为示例:

function read_base64_json(varName) {
  try {
    return JSON.parse(new Buffer(process.env[varName], 'base64').toString());
  } catch (err) {
    throw new Error(`no ${varName} environment variable`);
  }
};

// A simple variable.
let projectId = process.env.PLATFORM_PROJECT;

// A JSON-encoded value.
let variables = read_base64_json('PLATFORM_VARIABLES');

但是,我不确定在何处使用它,以及如何使它在本地使用我的.env文件,在实时环境中使用platform.sh变量。最好的方法是什么?

在webpack.config中,您可以像这样重新配置插件部分

plugins: [
    new webpack.DefinePlugin({
      VARIABLE_NAME:
        process.env.NODE_ENV === "production"
          ? VARIABLE_PRODUCTION_VALUE
          : VARIABLE_LOCAL_VALUE
    })
  ]

您可以在应用程序中的任何位置使用变量名称,它将根据环境而变化。

在webpack.config中,您可以像这样重新配置插件部分

plugins: [
    new webpack.DefinePlugin({
      VARIABLE_NAME:
        process.env.NODE_ENV === "production"
          ? VARIABLE_PRODUCTION_VALUE
          : VARIABLE_LOCAL_VALUE
    })
  ]

您可以在应用程序中的任何位置使用变量名称,它将根据环境而变化。

dotenv
使用文件内容覆盖您的环境变量。您可能希望在构建钩子中
rm.env

dotenv
用文件内容覆盖环境变量。您可能希望在构建钩子中
rm.env