我正在尝试将我的应用程序部署到本地计算机上,以模拟部署过程。 您称其为暂存模式。 我使用的工具包括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收到“禁止”错误消息。
如果要在开发过程中实现类似生产的可重复性,则应使用相同的工具实现相同的功能。
如今, docker compose是解决此问题的最佳解决方案。 首先,您应该有两个容器,第一个包含nginx,第二个包含pm2。 另外,您应该将静态文件的卷绑定/挂载到nginx。
您的代码应如下所示。
var path = require('path');
var virtualDirPath = process.env.virtualDirPath || '';
var appDir = path.dirname(require.main.filename) + virtualDirPath;
appDir将提供环境目录 ,从中可以访问html
文件。
希望能帮助到你:)