【问题标题】:Deploying Node w/ Express App to DigitalOcean: App Won't Run On Port 3000将带有 Express 应用程序的节点部署到 DigitalOcean:应用程序不会在端口 3000 上运行
【发布时间】:2016-12-01 06:18:47
【问题描述】:

我的 Express 应用位于安装了 Node 的 Ubuntu 16.04 DigitalOcean 服务器上。

作为一项基本测试,我使用以下命令运行了 server.js 文件:

node server.js

然后我测试了文件:

curl http://localhost:3000

然而这返回了Cannot GET /

我使用一个简单的 HTTP 服务器测试了一个单独的 app.js 文件 没有 Express,它返回了我想要的任何东西,无论端口号如何。换句话说,这不是防火墙问题。

Express 模块已安装。

我认为这可能是我的 Express 实现的问题。这是我的 server.js:

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


app.listen(3000, function () {
console.log("express has started on port 3000");
});

关于如何解决此问题的任何建议?

【问题讨论】:

  • 您的server.js 中没有路由。你试过app.get('/', function(req,res) { res.send('ok') } 吗?
  • 这修复了Cannot GET / 但是如何通过 curl 记录一些内容?使用简单的 HTTP 服务器,我使用 res.write 和 console.log 不会通过 curl 返回任何内容。感谢您的帮助,我是新来表达的:)
  • res.send('ok') 应该在 curl ok 中输出。如果你想登录到控制台,你可以使用res.send('ok'); console.log('request received');
  • 是的,这是最奇怪的事情,因为它没有输出任何东西。现在没有错误,但也没有输出。

标签: javascript node.js express deployment


【解决方案1】:

Reddit /u/bdenzer 帮助我解决了这个有效的答案。需要指向一个文件才能通过 CURL 查看输出。在app.listen 上添加此权利会产生输出。当然,您需要在与 server.js 相同的目录中创建一个包含文本的文件。您还需要在 server.js 的顶部导入它以提供文本文件:let path = require('path');

 app.get('/', (req, res) => { 
 res.sendFile(path.join(__dirname,'hello.txt')); 
 });

【讨论】:

    猜你喜欢
    • 2014-11-09
    • 1970-01-01
    • 2016-10-22
    • 2021-03-03
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    • 2016-07-22
    相关资源
    最近更新 更多