如何使用 Webpack 中定义的环境变量?
How to use environment variables that were defined in Webpack?
我目前正在尝试将 Google oauth 添加到我正在创建的 React 应用程序中。但是我 运行 遇到了问题。我已经在我的 webpack 中定义了一些变量,但是当我将它们添加到我的反应代码中时,它们会以未定义的形式出现。
React 组件代码
let googleLoginBaseUrl = 'https://www.google.com/o/oauth2/v2/auth'
let googleLoginQuery = stringify({
client_id: __GOOGLE_CLIENT_ID__,
response_type: 'code',
redirect_uri: `${__API_URL__}/oauth/google/code`,
scope: 'openid profile email',
prompt: __DEBUG__ ? 'consent' : undefined,
})
let googleLoginUrl = `${googleLoginBaseUrl}?${googleLoginQuery}`
Webpack.config.js代码
let plugins = [
new EnvironmentPlugin(['NODE_ENV']),
new ExtractPlugin('bundle-[hash].css'),
new HTMLPlugin({template: `${__dirname}/src/index.html`}),
new DefinePlugin({
__DEBUG__: JSON.stringify(!production),
__API_URL__: JSON.stringify(process.env.API_URL),
__GOOGLE_CLIENT_ID__: JSON.stringify(process.env.GOOGLE_CLIENT_ID),
}),
]
if (production)
plugins = plugins.concat([ new CleanPlugin(), new UglifyPlugin() ])
module.exports = {
plugins,
编译错误
Failed to compile.
./src/components/Login/login.js
Line 10:24: '__GOOGLE_CLIENT_ID__' is not defined no-undef
Line 12:30: '__API_URL__' is not defined no-undef
Line 14:21: '__DEBUG__' is not defined no-undef
Search for the keywords to learn more about each error.
好像没有javascript编译错误,只是ESLint报错。可能您已经以这种方式设置了您的构建过程,一些 eslint 错误停止了您的构建过程。
我可以确认在应用程序中使用 DefinePlugin 定义的变量被 ESLint 报告为 no-undef
错误。
尝试禁用此 ESLint 规则,将 /* eslint-disable no-undef */
放在 ./src/components/Login/login.js
的第一行。
或者您可以将定义的变量添加到 eslint 配置文件中的 globals
部分,请参阅以下答案:
我目前正在尝试将 Google oauth 添加到我正在创建的 React 应用程序中。但是我 运行 遇到了问题。我已经在我的 webpack 中定义了一些变量,但是当我将它们添加到我的反应代码中时,它们会以未定义的形式出现。
React 组件代码
let googleLoginBaseUrl = 'https://www.google.com/o/oauth2/v2/auth'
let googleLoginQuery = stringify({
client_id: __GOOGLE_CLIENT_ID__,
response_type: 'code',
redirect_uri: `${__API_URL__}/oauth/google/code`,
scope: 'openid profile email',
prompt: __DEBUG__ ? 'consent' : undefined,
})
let googleLoginUrl = `${googleLoginBaseUrl}?${googleLoginQuery}`
Webpack.config.js代码
let plugins = [
new EnvironmentPlugin(['NODE_ENV']),
new ExtractPlugin('bundle-[hash].css'),
new HTMLPlugin({template: `${__dirname}/src/index.html`}),
new DefinePlugin({
__DEBUG__: JSON.stringify(!production),
__API_URL__: JSON.stringify(process.env.API_URL),
__GOOGLE_CLIENT_ID__: JSON.stringify(process.env.GOOGLE_CLIENT_ID),
}),
]
if (production)
plugins = plugins.concat([ new CleanPlugin(), new UglifyPlugin() ])
module.exports = {
plugins,
编译错误
Failed to compile.
./src/components/Login/login.js
Line 10:24: '__GOOGLE_CLIENT_ID__' is not defined no-undef
Line 12:30: '__API_URL__' is not defined no-undef
Line 14:21: '__DEBUG__' is not defined no-undef
Search for the keywords to learn more about each error.
好像没有javascript编译错误,只是ESLint报错。可能您已经以这种方式设置了您的构建过程,一些 eslint 错误停止了您的构建过程。
我可以确认在应用程序中使用 DefinePlugin 定义的变量被 ESLint 报告为 no-undef
错误。
尝试禁用此 ESLint 规则,将 /* eslint-disable no-undef */
放在 ./src/components/Login/login.js
的第一行。
或者您可以将定义的变量添加到 eslint 配置文件中的 globals
部分,请参阅以下答案: