【问题标题】:react native environment variables .env return undefined反应本机环境变量 .env 返回未定义
【发布时间】:2021-12-12 20:58:07
【问题描述】:

我目前正在使用 dotenv,但 @env 似乎存在一些缓存问题。所以想尝试使用 process.env 但它返回未定义。我正在使用 expo、dotenv 和 webpack。 在 app.js 上,process.env.REACT_APP_KEY 返回未定义的、已重新启动的服务器、终端甚至我的 PC。

.env

REACT_APP_KEY=aaddddawrfffvvvvssaa
REACT_APP_KEY = aaddddawrfffvvvvssa

Webpack 配置

const createExpoWebpackConfigAsync = require('@expo/webpack-config');

module.exports = async function (env, argv) {
const config = await createExpoWebpackConfigAsync(env, argv);
const path = require('path')

config.module.rules = config.module.rules.map(rule => {
    if (rule.oneOf) {
        let hasModified = false;

        const newRule = {
            ...rule,
            oneOf: rule.oneOf.map(oneOfRule => {
                if (oneOfRule.use && oneOfRule.use.loader && oneOfRule.use.loader.includes('babel-loader')) {
                    oneOfRule.include = [
                        path.resolve('.'),
                        path.resolve('node_modules/@ui-kitten/components'),
                    ]
                }
                if (oneOfRule.test && oneOfRule.test.toString().includes('svg')) {
                    hasModified = true;
                    const test = oneOfRule.test.toString().replace('|svg', '');
                    return {...oneOfRule, test: new RegExp(test)};
                } else {
                    return oneOfRule;
                }
            })
        };

        // Add new rule to use svgr
        // Place at the beginning so that the default loader doesn't catch it
        if (hasModified) {
            newRule.oneOf.unshift({
                test: /\.svg$/,
                exclude: /node_modules/,
                use: [
                    {
                        loader: '@svgr/webpack',
                    }
                ]
            });
        }

        return newRule;
    } else {
        return rule;
    }
});

return config;
};

babel 配置

    module.exports = function(api) {
  api.cache(true);
  return {
    presets: ['babel-preset-expo'],
    plugins: [
      'react-native-reanimated/plugin',
      ['module:react-native-dotenv', {
        'moduleName': '@env',
        'path': '.env',
        "blocklist": null,
        "allowlist": null,
        "safe": true,
        "allowUndefined": false,
      }]
    ],
  };
};

如果它很重要(对于 dotenv)

declare module '@env' {
  export const API_ENDPOINT: string;
}

还尝试了 process.env.NODE_ENV(它正在工作并将“开发”打印为输出)。只有 process.env.VARIABLE_NAME 未定义

【问题讨论】:

    标签: react-native environment-variables expo dotenv


    【解决方案1】:

    这里是维护者! process.env react-native-dotenv 的支持是本月刚刚添加的 https://github.com/goatandsheep/react-native-dotenv/issues/187

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-07
      • 2019-01-08
      • 2016-11-11
      • 2020-10-06
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      相关资源
      最近更新 更多