我有一个可以在 中正常运行的应用程序本地 开发,但是当我部署它(Ubuntu 21.x 服务器)时,我运行 node/pm2 start(甚至安装了 nodemon 来尝试)我得到 404 错误(不是我的 404 页面)。登录到服务器后我如何部署它:
sudo apt update
sudo apt upgrade
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs
git clone (repo)
cd (repo)
npm install
然后我运行它node app.js
//or
pm2 start app.js
//even using nodemon
nodemon app.js
我安装了 Nginx,当我引用 IP 地址时,我得到了他们欢迎的 HTML,但是当我进入项目端口 3000 时,我得到了 404这是我的服务器代码,除了 POST 请求:
const express = require('express');
const helmet = require('helmet');
const compression = require('compression');
const bodyParser = require('body-parser');
// express app
const app = express();
app.use(helmet);
app.use(compression());
// bodyparser middleware
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
// listen for request
app.listen(process.env.PORT || 3000);
// miidleware static files
app.use(express.static('public'));
app.use(express.static('script'));
app.get('/', (req, res) => {
res.sendFile('./views/index.html', { root: __dirname });
});
app.use((req, res) => {
res.status(404).sendFile('./views/404.html', { root: __dirname });
});
花了大约 12 天的时间尝试所以非常感谢帮助。
最佳答案
您部署的服务器似乎有一个开放的端口 80,但没有端口 3000。
如果您想通过端口 3000 访问您的 express 应用程序,您需要在 Ubuntu 服务器上打开该端口。如何做到这一点取决于从服务器所在位置到您使用的防火墙的大量变量。
如果您尝试让 Nginx 在端口 80 上显示您的 express 应用程序,则需要使用 Nginx 创建反向代理。
为此,请阅读此 here .有太多变数需要我们进一步帮助
关于node.js - 部署后在我的 Express 应用程序上获取 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67783168/