我有一个使用 webpack-dev-middleware 提供文件的 webpack 项目。这是服务器设置。
const webpackMiddleware = require("webpack-dev-middleware");
const webpackHotMiddleware = require("webpack-hot-middleware");
const webpack = require("webpack");
const webpackConfig = require("../webpack.config.js");
const compiler = webpack(webpackConfig);
//this enables routing
app.use(history());
app.use(
webpackMiddleware(compiler, {
noInfo: true,
publicPath: webpackConfig.output.publicPath,
})
);
app.use(
webpackHotMiddleware(compiler, {
path: "/__webpack_hmr",
heartbeat: 10 * 1000,
})
);
我安装了“dotenv”包并在应用程序的根目录中创建了“development.env”。这个 webpack 配置:
require("dotenv").config({ path: "development.env" });
plugins:[
new webpack.DefinePlugin({
"process.env.DB_URL": JSON.stringify(process.env.DB_URL),
"process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV),
}),]
这是 development.env:
NODE_ENV=development
DB_URL=mongodb+srv://myURL
只有 NODE_ENV 被定义。其他任何东西都返回未定义
console.log(process.env.DB_URL); // undefined
console.log(process.env.NODE_ENV);// development
我必须在服务器上做一个魔术,但它不知道怎么做。
我使用了命令行选项并且它有效:
"dev": " nodemon -r dotenv/config index.js --watch client"
但我仍然不明白为什么它在第一种方法中不起作用。当我使用 webpack-dev-server 时,我的所有其他 spa 应用程序都以这种方式工作。