Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么Node.js简单http服务器应用程序不能在服务器上运行?_Javascript_Node.js_Lamp - Fatal编程技术网

Javascript 为什么Node.js简单http服务器应用程序不能在服务器上运行?

Javascript 为什么Node.js简单http服务器应用程序不能在服务器上运行?,javascript,node.js,lamp,Javascript,Node.js,Lamp,我正在学习如何在服务器中使用Node.js应用程序(而不是我的本地计算机)。在这种情况下,为了创建一个简单的web服务器,我将遵循以下步骤 我已经安装了Node.js,并通过CLI测试了它的工作原理。我可以运行javascript代码,在CLI中生成输出,等等。但我无法使用浏览器通过URL使应用程序工作 我的应用程序文件夹结构非常简单: index.js package.json package-lock.json 这是我目前在index.js中使用的代码: var http = requir

我正在学习如何在服务器中使用Node.js应用程序(而不是我的本地计算机)。在这种情况下,为了创建一个简单的web服务器,我将遵循以下步骤

我已经安装了Node.js,并通过CLI测试了它的工作原理。我可以运行javascript代码,在CLI中生成输出,等等。但我无法使用浏览器通过URL使应用程序工作

我的应用程序文件夹结构非常简单:

index.js
package.json
package-lock.json
这是我目前在
index.js
中使用的代码:

var http = require('http'); // 1 - Import Node.js core module

var server = http.createServer(function (req, res) {   // 2 - creating server

    if (req.url == '/') { //check the URL of the current request
        
            // set response header
            res.writeHead(200, { 'Content-Type': 'text/html' }); 
        
            // set response content    
            res.write('<html><body><p>This is home Page.</p></body></html>');
            res.end();
    
        }
        else if (req.url == "/student") {
        
            res.writeHead(200, { 'Content-Type': 'text/html' });
            res.write('<html><body><p>This is student Page.</p></body></html>');
            res.end();
    
        }
        else if (req.url == "/admin") {
        
            res.writeHead(200, { 'Content-Type': 'text/html' });
            res.write('<html><body><p>This is admin Page.</p></body></html>');
            res.end();
    
        }
        else
            res.end('Invalid Request!');
    

});

server.listen(5000); //3 - listen for any incoming requests

console.log('Node.js web server at port 5000 is running..')
var http=require('http');//1-导入Node.js核心模块
var server=http.createServer(函数(req,res){//2-创建服务器
如果(req.url=='/'){//,请检查当前请求的url
//设置响应头
res.writeHead(200,{'Content-Type':'text/html'});
//设置响应内容
res.write(“这是主页。

”); res.end(); } else if(req.url==“/student”){ res.writeHead(200,{'Content-Type':'text/html'}); res.write(“这是学生页面。

”); res.end(); } else if(req.url==“/admin”){ res.writeHead(200,{'Content-Type':'text/html'}); res.write(“这是管理页面。

”); res.end(); } 其他的 res.end('无效请求!'); }); 服务器。听(5000)//3-侦听任何传入的请求 log('端口5000处的Node.js web服务器正在运行..')
如果我通过CLI转到应用程序文件夹并运行应用程序(node index.js),我可以看到预期的console.log()输出(端口5000处的node.js web服务器正在运行..)。但是如果我转到指向该文件夹的URL,我希望输出
,这是主页。

,它不起作用(我得到的信息见下文)

我在应用程序文件夹中有一个具有文档根的域()。以下是我尝试过的:

  • //浏览器显示index.js的源代码
  • //浏览器显示错误连接超时
  • //浏览器显示404错误
  • //浏览器显示index.js的源代码
  • //浏览器显示404错误
这些都没有给出我所期望的答案。我不知道这是否是我的文件结构、服务器配置的问题。。。但我一直在环顾四周,我不明白为什么这个基本示例在我的案例中不起作用,显然我遗漏了一些东西。任何帮助都将不胜感激

编辑:
我尝试运行此应用程序的服务器是一台装有CentOS 7的LAMP机器。

我已签入我的服务器(Nginx),您的代码运行正常

在阅读了@MinusFour的评论后,我怀疑您没有在服务器的安全组中打开5000端口

安全组就像

如果这不起作用,您还可以检查服务器的防火墙设置

至于您的域表达式:

  • //浏览器显示index.js的源代码
  • //浏览器显示错误连接超时
  • //浏览器显示404错误(不正确)
  • //浏览器显示index.js的源代码
  • //浏览器显示404错误(不正确)
你可以参考



我没有超过50%的声誉要评论,所以我必须在这里回答。

我已经检查了我的服务器(Nginx),您的代码运行良好

在阅读了@MinusFour的评论后,我怀疑您没有在服务器的安全组中打开5000端口

安全组就像

如果这不起作用,您还可以检查服务器的防火墙设置

至于您的域表达式:

  • //浏览器显示index.js的源代码
  • //浏览器显示错误连接超时
  • //浏览器显示404错误(不正确)
  • //浏览器显示index.js的源代码
  • //浏览器显示404错误(不正确)
你可以参考



我没有超过50%的声誉可以评论,所以我必须在这里回答。

“Jt不起作用”。任何东西“我在应用程序文件夹中有一个文档根目录为的域()。-除了指向您的web服务器之外,域实际上并不重要。但您需要告诉我们有关服务器安装的更多信息。你在说什么“文档根”?这是一台预配置了服务静态文件的软件的服务器吗?这不是运行node.js应用程序的方式。它对我来说很有用。如果您正在获取
index.js
文件的源代码,那么您正在端口80上运行另一个web服务器,但是如果您正在获取
console.log
行,那么在端口
5000
上应该可以工作。这也不是使用
https
,因此您应该使用
http
,并提供正确的URL
example.com:5000/
not
example.com/:5000
您使用的是哪种Linux?“Jt不起作用”。任何东西“我在应用程序文件夹中有一个文档根目录为的域()。-除了指向您的web服务器之外,域实际上并不重要。但您需要告诉我们有关服务器安装的更多信息。你在说什么“文档根”?这是一台预配置了服务静态文件的软件的服务器吗?这不是运行node.js应用程序的方式。它对我来说很有用。如果您正在获取
index.js
文件的源代码,那么您正在端口80上运行另一个web服务器,但是如果您正在获取
console.log
行,那么在端口
5000
上应该可以工作。这也不是使用
https
,因此您应该使用
http
,并提供正确的URL
example.com:5000/
not
example.com/:5000
您使用的是哪种Linux?这是正确的答案!在我打开端口5000(并使用http而不是https)后,它工作了!非常感谢。这是