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

时间:2017-08-16 08:24:23

标签: node.js production

我正在尝试将我的应用部署到本地计算机以模拟部署过程。你称之为临时模式或其他什么。我使用的工具包括pm2和Nginx。

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

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

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

允许客户端访问快速服务器上的index.html文件。但我不确定在somePath放什么?当我将项目部署到服务器时,我将服务器端和客户端分开。例如,我的服务器端位于/usr/path/server,但我的客户端位于/etc/shared/html。如果我搞砸了路径,我会得到一个禁止的#34;来自的错误消息 当我访问index.html时表达。

2 个答案:

答案 0 :(得分:0)

如果您希望在开发过程中实现类似生产的可重复性,那么您应该使用相同的工具实现相同的功能。

现在docker compose是解决此问题的最佳解决方案。首先你应该有两个容器,第一个用nginx,第二个用pm2。您还应该将静态文件的卷绑定/挂载到nginx。

答案 1 :(得分:0)

您的代码应该是这样的。

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

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

希望有所帮助:)