如何配置expressjs以在生产模式下提供index.html?

问题描述 投票:1回答:2

我正在尝试将我的应用程序部署到本地计算机上,以模拟部署过程。 您称其为暂存模式。 我使用的工具包括pm2和Nginx。

当我直接在项目中使用pm2 start server.js运行我的应用程序时,我可以使用我的Web应用程序。 客户端可以通过Nginx服务器访问index.html文件。 但是我认为这不是生产模式,除非我也使用--env production

因此,我将所有必需的文件复制到项目的dist目录中,将Nginx配置为提供静态内容,并且在我的源代码中,我想使用

app.get('/', function(req, res) {
    res.sendFile('index.html', {root: somePath});
});

允许客户端访问Express服务器上的index.html文件。 但是我不确定在somePath放什么? 将项目部署到服务器时,我将服务器端和客户端分开。 例如,我的服务器端在/usr/path/server而我的客户端在/etc/shared/html 。 如果弄乱了路径,当我访问index.html时,我将从express收到“禁止”错误消息。

node.js production
2个回答
0
投票

如果要在开发过程中实现类似生产的可重复性,则应使用相同的工具实现相同的功能。

如今, docker compose是解决此问题的最佳解决方案。 首先,您应该有两个容器,第一个包含nginx,第二个包含pm2。 另外,您应该将静态文件的卷绑定/挂载到nginx。


0
投票

您的代码应如下所示。

 var path = require('path');
 var virtualDirPath = process.env.virtualDirPath || '';
 var appDir = path.dirname(require.main.filename) + virtualDirPath;

appDir将提供环境目录 ,从中可以访问html文件。

希望能帮助到你:)

© www.soinside.com 2019 - 2024. All rights reserved.