【发布时间】: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