反应本机环境变量 .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.env
对 react-native-dotenv
的支持是本月刚刚添加的 https://github.com/goatandsheep/react-native-dotenv/issues/187
我目前正在使用 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.env
对 react-native-dotenv
的支持是本月刚刚添加的 https://github.com/goatandsheep/react-native-dotenv/issues/187