具有Localhost的简单NodeJS服务器,错误(404):“未找到”

时间:2017-08-21 15:40:12

标签: javascript node.js

这适用于允许交叉原点的测试环境配置。这适用于我的AWS弹性beanstalk但是,当我使用nodejs http-server时,我得到Error (404): "Not found"。我尝试了不同的配置。此外,我发现与此问题相关的许多答案都涉及到express,我没有使用。如果有人知道或看到我做错了什么,我将非常感谢帮助。先谢谢你了!

   var port = process.env.PORT || 8080,
        http = require('http'),
        fs = require('fs'),
        html = fs.readFileSync('index.html');
    var server = http.createServer(function(req, res) {
        res.setHeader('Access-Control-Allow-Origin', '*');
        res.setHeader('Access-Control-Request-Method', '*');
        res.setHeader('Access-Control-Allow-Methods', 'OPTIONS,GET,PUT,POST,DELETE');
        res.setHeader('Access-Control-Allow-Headers', '*');

        if (req.method === 'POST') {
            var body = '';

            req.on('data', function(chunk) {
                body += chunk;
            });

            req.on('end', function() {
                if (req.url === '/') {
                    log('Received message: ' + body);
                } else if (req.url = '/scheduled') {
                    log('Received task ' + req.headers['x-aws-sqsd-taskname'] + ' scheduled at ' + req.headers['x-aws-sqsd-scheduled-at']);
                }

                res.writeHead(200, 'OK', { 'Content-Type': 'text/plain' });
                var ip = req.connection.remoteAddress
                res.write(body);
                res.end();
            });
        } else {
            res.writeHead(200);
            res.write(html);
            res.end();
        }
    });
    server.listen(port);

2 个答案:

答案 0 :(得分:2)

在localhost上它对我来说很好用

  • 在控制台node server.js上运行如下(其中server.js包含您发布的代码)

  • 启动服务器时,您是否仔细检查了PORT env变量?如果您没有设置PORT env变量,请务必转到浏览器上的http://localhost:8080/。要在控制台上检查env变量,可以执行命令env

  • 您是否拥有index.html以便html = fs.readFileSync('index.html');有效?

答案 1 :(得分:1)

您不应该使用http-server,您应该使用plain node.js:

node yourfile.js

Http-server用于提供未由节点执行的文件,但很明显,您已经编写了一个脚本,该节点应该执行以返回响应