[英]Environment variable is undefined in electron even it has been set inside webpack.DefinePlugin
[英]variables I defined in webpack.DefinePlugin is undefined
webpack.config.js
const path = require('path')
HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
entry: './src/index.js',
output: {
path: path.join(__dirname, 'dist'),
filename: 'index_bundle.js',
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ["@babel/preset-env", "@babel/preset-react"],
plugins: ["@babel/plugin-proposal-class-properties"]
}
}
},
{
test:/\.css$/,
use:['style-loader','css-loader']
}
]
},
plugins: [
new webpack.DefinePlugin({
APIHOST: JSON.stringify('test'),
BLOCKCHAINHOST: JSON.stringify('test')
}),
new HtmlWebpackPlugin({
template: './src/template.html'
}),
]
}
我定義了 2 個變量 APIHOST 和 BLOCKCHAINHOST 並嘗試在 reactjs App.js 中進行控制台記錄,就像這樣
componentDidMount() {
console.log(APIHOST)
}
我得到的錯誤是 APIHOST 未定義。 我不確定在這里做什么,我嘗試為 webpack.defineplugin 添加單引號,所以它看起來像 'APIHOST': JSON.stringify('test') 但它仍然給我同樣的錯誤。
你可以這樣做
plugins: [
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('development')
}
})
],
然后在你的代碼中
process.env.NODE_ENV
我使用的版本是
"webpack": "^4.29.6"
看起來這是一個已知問題:
https://github.com/webpack/webpack/issues/1977
DefinePlugin 在 React 組件中不起作用
稍后在 Webpack 3 中修復:
這是固定的。 從 webpack 3 開始,解析器現在完全理解 ES6 語義。
你用的是什么版本? 升級有意義嗎?
// eslint-disable-next-line no-undef
可能是eslint的問題,設置了檢查,嚴格的,在編譯時不讓通過了,然后使用到該變量的地方加上這句注釋
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.