【问题标题】:nodejs cannot run with expressnodejs 不能用 express 运行
【发布时间】:2019-12-13 12:26:14
【问题描述】:

我安装了 nodejs 和 express 但它无法正确运行我的 Main.js

它显示: 无法获取 /Main/

/etc/nginx/sites-available/digitalocean:

 location /Main/ {
    proxy_pass http://localhost:8080;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
}

Main.js:

var express = require('express');

console.log('done');
var app = express();

app.get('/', (req, res) => res.send('Hello World!'))

app.listen('8080', function () {
console.log('Test');
});

【问题讨论】:

  • 请记住,运行中的 Express 服务器默认不会执行任何操作。您必须为要主动提供某些内容的每个 URL 定义路由。所以,你有一个没有路由的正在运行的服务器,因此它没有做任何有用的事情。您甚至没有一个错误处理路由,它至少会为对不受支持的路由的请求提供 404 错误。您可以从添加它开始,看看您是否收到 404 错误。如果不是,那么第一个问题是在 nginx 配置中。如果是这样,那么您只需将路线添加到您的快速代码中。
  • 另外,我强烈建议您首先在您自己的本地计算机上运行一个普通的 express 应用程序(没有 nginx)。让它发挥作用。然后,如果您想在前面使用 nginx 对其进行配置,则在从已知的可运行的 Express 应用程序开始时进行该配置。现在你有两个未知的系统,可能两个都有问题。
  • @jfriend00 我在我的代码中添加了路由,但它仍然不起作用。但是,我尝试在本地运行代码并返回真实结果。我猜是 nginx 配置的问题,但是我怎样才能找到问题呢?
  • 我从 chrome 收到此错误“加载资源失败:服务器响应状态为 404”

标签: node.js express digital-ocean pm2


【解决方案1】:

您已将 /Main 路由映射到 http://localhost:8080,但您的 express 应用程序中没有路由,因此请求失败。您当前的代码只是启动了一个服务器,但不提供任何内容。

创建一个默认路由以查看您的端点是否正常工作。 将 Main.js 更改为

var express = require('express');
var app = express();

app.get('/', (req, res) => res.send('Hello World!'))

app.listen('8080', function () {
console.log('Test');
});

【讨论】:

  • 我已经为我的代码添加了路由,但它仍然无法在服务器中运行。我尝试在本地运行代码并返回真实结果。
【解决方案2】:

我将代码更改如下,然后问题就解决了。是路线的问题。

Main.js:

var express = require('express');

console.log('done');
var app = express();

app.get('/', (req, res) => res.send('Hello World!'))

app.get('/Main', (req, res) => res.send('Hello World!'))

app.listen('8080', function () {
console.log('Test');
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-24
    • 2018-10-25
    • 2020-08-06
    • 1970-01-01
    • 2017-04-06
    • 2020-05-09
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多