反应本机环境变量 .env return undefined

react native environment variables .env return undefined

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

.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(正在运行并打印“development”作为输出)。只有 process.env.VARIABLE_NAME 未定义

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