【问题标题】:process.env undefined BEFORE webpackprocess.env 在 webpack 之前未定义
【发布时间】:2021-09-27 14:19:20
【问题描述】:

我有一个使用 expressjs 和 webpack 构建的服务器端渲染应用程序。 SSR 页面中有一些反应脚本。但是,在控制台日志之后,我发现 process.env 在不同的 js 文件中并不总是相同的值。

我使用process.env.node_env在对应的环境中定义不同的API url,并使用Dotenv-webpack注入node_env。

未定义的 node_env 都是在 webpack 构建信息之前在终端上登录的控制台。它们都用在 SSR 静态页面上。

[nodemon] starting `node ./bin/www.js`
4 undefined
envenvenv undefined
19 undefined
envenvenv undefined
18 undefined
envenvenv undefined
5 undefined
envenvenv undefined
6 undefined
envenvenv undefined
3 undefined
envenvenv undefined
17 undefined
envenvenv undefined
(node:27468) DeprecationWarning: Tapable.plugin is deprecated. Use new API on `.hooks` instead
webpack built 6a9a1e2ed86071ed2ac3 in 14421ms
Hash: 6a9a1e2ed86071ed2ac3
Version: webpack 4.45.0
Time: 14421ms
Built at: 07/20/2021 11:11:15 AM

虽然正确定义的 node_env 都是在 chrome 上登录的控制台,并且它们都用于 react 组件。

我认为某些 SSR 页面是在 webpack 捆绑之前“生成”的,因此它们是未定义的。但是 react 组件在捆绑并发送到客户端后会在 chrome 中呈现,因此它们具有正确的 node_env。

正确吗?如何解决这个问题?

【问题讨论】:

    标签: node.js express webpack server-side-rendering dotenv


    【解决方案1】:

    nodemon 告诉你错误, 执行的命令是

    node ./bin/www.js 
    
    

    你需要给它添加 NODE_ENV

    NODE_ENV=development node ./bin/www.js
    
    

    【讨论】:

      【解决方案2】:

      Ernesto 的方法应该是一个很好的解决方案,而我在需要 node_env 的特定文件中实现了 dotenv 而不是 dotenv-webpack。

      似乎 SSR 页面是在 webpack 捆绑之前编译的。所以我不能使用 dotenv-webpack 插件来使它们可用。

      【讨论】:

        猜你喜欢
        • 2015-05-19
        • 1970-01-01
        • 1970-01-01
        • 2022-01-04
        • 2021-11-23
        • 2022-11-10
        • 2016-02-17
        • 2019-08-12
        • 2011-07-24
        相关资源
        最近更新 更多