node.js - 部署后在我的 Express 应用程序上获取 404

标签 node.js express ubuntu deployment devops

我有一个可以在 中正常运行的应用程序本地 开发,但是当我部署它(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/

相关文章:

javascript - 我的 Node forever 插件不工作

javascript - Firebase serve --only functions VS local emulator 在本地运行云功能?

node.js - Express/torrent-stream : writing a file from stream, 使用 url 向客户端发送套接字,但客户端找不到文件

node.js - Angular 12 通用配置 'development' 未在工作区中设置

wordpress - 在此服务器上找不到请求的 URL/wordpress/

linux - 允许在 rbash 中完成制表符

node.js - 如何在nodejs中使用变量创建mongodb查询对象

mysql - NodeJs 和 MariaDB,存储用户和密码

javascript - CSS和Node表达问题

java.io.IOException : Connection reset by peer