我正在尝试为nodejs运行http-server。
使用npm start
后,服务器在给定端口(8000)上完美启动,但有一些可忽略的错误。但是当我尝试运行应用程序 url 时,它显示“网页不可用”。
当我尝试 ping
IP 时,它通过完美发送数据包进行响应。
当我运行 http-server
命令时,它显示它正在 127.0.0.1:8080 和 172.31.46.121:8080 上运行。我尝试将 localhost 端口更改为 8080,但结果没有任何差异。
我正在使用 putty 客户端在 Windows 上运行 Linux。
nodejs版本-5.4.1
npm 版本-3.7.0
请帮忙..
还有一件事..
我在端口 80 上的 putty 上运行了这个服务器。然后,在服务器仍在运行的情况下,我尝试使用 Bitnami 客户端(即使用 npm start
)在同一端口(80)运行相同的 Nodejs 服务器并且不存在端口冲突。当我通过 Bitnami 客户端运行该应用程序时,即使该应用程序在该端口也运行良好。
http-服务器文件代码-
` #!/usr/bin/env node
var colors = require('colors'),
httpServer = require('../lib/http-server'),
argv = require('optimist').argv,
portfinder = require('portfinder'),
opener = require('opener');
if (argv.h || argv.help) {
console.log([
"usage: http-server [path] [options]",
"",
"options:",
" -p Port to use [8080]",
" -a Address to use [0.0.0.0]",
" -d Show directory listings [true]",
" -i Display autoIndex [true]",
" -e --ext Default file extension if none supplied [none]",
" -s --silent Suppress log messages from output",
" --cors Enable CORS via the 'Access-Control-Allow-Origin' header",
" -o Open browser window after staring the server",
" -c Set cache time (in seconds). e.g. -c10 for 10 seconds.",
" To disable caching, use -c-1.",
" -h --help Print this list and exit."
].join('\n'));
process.exit();
}
var port = argv.p || parseInt(process.env.PORT, 10),
host = argv.a || '0.0.0.0',
log = (argv.s || argv.silent) ? (function () {}) : console.log,
requestLogger;
if (!argv.s && !argv.silent) {
requestLogger = function(req) {
log('[%s] "%s %s" "%s"', (new Date).toUTCString(), req.method.cyan, req.url.cyan, req.headers['user-agent']);
}
}
if (!port) {
portfinder.basePort = 8080;
portfinder.getPort(function (err, port) {
if (err) throw err;
listen(port);
});
} else {
listen(port);
}
function listen(port) {
var options = {
root: argv._[0],
cache: argv.c,
showDir: argv.d,
autoIndex: argv.i,
ext: argv.e || argv.ext,
logFn: requestLogger
};
if (argv.cors) {
options.headers = { 'Access-Control-Allow-Origin': '*' };
}
var server = httpServer.createServer(options);
server.listen(port, host, function() {
log('Starting up http-server, serving '.yellow
+ server.root.cyan
+ ' on port: '.yellow
+ port.toString().cyan);
log('Hit CTRL-C to stop the server');
if (argv.o) {
opener('http://127.0.0.1:' + port.toString());
}
});
}
if (process.platform !== 'win32') {
//
// Signal handlers don't work on Windows.
//
process.on('SIGINT', function () {
log('http-server stopped.'.red);
process.exit();
});
}
`
最佳答案
请提供一些代码, 出于纯粹的猜测,绑定(bind) IP 可能存在问题。您可能将服务器的IP地址绑定(bind)到127.0.0.1,该地址只能从locahost访问,将其更改为0.0.0.0以允许外部访问。
var http = require('http');
http.createServer(function(req, res) {
res.writeHead(200, {
'content-type': 'text/plain'
});
res.end('It works');
}).listen(3000, '0.0.0.0');
关于node.js - Http服务器nodejs正在运行但不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35128094/