4 回答

TA貢獻1827條經驗 獲得超8個贊
有dotenv-webpack專門針對這種情況的插件。
設置非常簡單:
// webpack.config.js
const dotEnv = require('dotenv-webpack')
module.exports = {
? plugins: [new dotEnv()]
}
編輯
這個答案對于評論來說太冗長了:
您正在添加dotEnv
到錯誤的plugins
屬性。
module: {
? ? rules: [
? ? ? cssConfig,
? ? ? {
? ? ? ? test: /\.js$/,
? ? ? ? exclude: /(node_modules)/,
? ? ? ? use: {
? ? ? ? ? loader: "babel-loader",
? ? ? ? ? options: {
? ? ? ? ? ? presets: ["@babel/preset-react", "@babel/preset-env"],
? ? ? ? ? ? plugins: [/* WRONG */ new dotEnv(), "@babel/plugin-transform-runtime"]
? ? ? ? ? }
? ? ? ? }
? ? ? }
? ? ]
? }
什么時候應該在這里添加:
if (currentTask == "dev") {
? config.plugins = [/* RIGHT */ new dotEnv()]
}

TA貢獻1876條經驗 獲得超6個贊
dotenv
變量將僅在 webpack 中可用,并且process
用于 webpack 未編譯的內容。
為了使您的環境變量在 webpack 編譯文件中可用,您需要使用 webpack 的定義或環境插件注入它。
這將在編譯過程中用環境變量替換文件中的所有環境字符串。
您的密鑰未定義的原因是因為當 webpack (babel) 編譯它時該字符串不存在,因為它從未通過 webpack 環境變量被替換/注入。

TA貢獻1827條經驗 獲得超8個贊
在你想要使用環境變量的文件頂部添加:
import dotenv from 'dotenv';
dotenv.config();
一切都應該正常工作:p
關于 fs 模塊的錯誤,您是否嘗試將以下代碼段添加到您的 webpack 配置中?
node: {
fs: 'empty'
}

TA貢獻2016條經驗 獲得超9個贊
我建議使用dotenv-webpack來訪問.env
文件變量。
在 Webpack 配置文件中添加以下內容:
// webpack.config.js
const Dotenv = require('dotenv-webpack');
...
let config = {
? entry: "./app/assets/scripts/App.js",
? plugins: pages,
? ...
};
config.plugins.pushes(new Dotenv());
...
添加回答
舉報