1

我有一个使用 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 应用程序都以这种方式工作。

4

0 回答 0