当使用.env.development而不是.env时,process.env返回undefined



我正在使用Webpack进行开发。

当我使用.env文件运行项目时,它可以按预期工作。

但当我将其文件名更改为.env.development时,process.env将变为undefined

我该怎么修?

软件包.json

"scripts": {
"start": "webpack-dev-server --config ./webpack.config.js"

webpack.config.js

const webpack = require("webpack");
const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const Dotenv = require("dotenv-webpack");
module.exports = {
mode: "development",
entry: path.resolve(__dirname, "./src/index.jsx"),
devtool: "source-map",
output: {
path: path.join(__dirname, "/dist"),
filename: "bundle.js",
},
devServer: {
port: 3000,
static: true,
historyApiFallback: true,
open: true,
},
resolve: {...},
module: {...},
plugins: [
new Dotenv(),
new HtmlWebpackPlugin({
template: "public/index.html",
filename: "index.html",
favicon: "public/favicon.ico",
}),
new webpack.ProvidePlugin({
Buffer: ["buffer", "Buffer"],
}),
new webpack.ProvidePlugin({
process: "process/browser",
}),
],
};
默认情况下,dotenv只查找.env文件。这是经过深思熟虑的,因为env文件应该是本地的,并且特定于应用程序运行的环境。你不应该为不同的环境保留不同版本的env。

我将引用dotenv的文档:

我应该有多个.env文件吗

没有。我们强烈建议不要使用";主";.env文件和"环境";.env文件类似于.env.test。您的配置应该有所不同在部署之间,并且不应该在环境。

在十二因素应用程序中,env-var是细粒度控件,每个控件都与其他env-var完全正交。它们从来没有组合在一起"环境",而是针对每个部署进行独立管理。这是一个随着应用程序的自然扩展而平滑扩展的模型在其使用寿命内进行更多部署。

–十二因素应用

可以但是,如果您选择以下选项,请告诉dotenv-webpack在哪里查找您的文件:

plugins: [
new Dotenv({
path: './.env.development',
}),

最新更新