【发布时间】: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