Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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
Node.js 简单节点服务器返回";无法获取/quot;_Node.js - Fatal编程技术网

Node.js 简单节点服务器返回";无法获取/quot;

Node.js 简单节点服务器返回";无法获取/quot;,node.js,Node.js,我有一个简单的服务器,当我转到localhost:3000时,我会得到“cannotget/”,当我尝试调用/注册时,它也会失败。有什么想法吗?谢谢 var express = require('express'); var gcm = require('node-gcm'); var apn = require('apn'); var app = express(); var device_token; /* , function(){ var host = server.addre

我有一个简单的服务器,当我转到localhost:3000时,我会得到“cannotget/”,当我尝试调用/注册时,它也会失败。有什么想法吗?谢谢

var express = require('express');
var gcm = require('node-gcm');
var apn = require('apn');

var app = express();
var device_token;

 /*
 , function(){
 var host = server.address().address;
 var port = server.address().port;
 console.log(port, host);
 }
*/
 app.listen(3000);

 app.use(function(req, res, next){
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With,    Content-Type, Accept");
   next();
 });

app.post('/register', function(req, res){
   device_token = req.body.device_token;
   console.log('device token received');
   console.log(device_token);

   res.send('ok');
});

您没有为
/
定义路由
/register
不起作用,因为您有只接受post请求的
app.post
。如果希望
GET
请求
/register
正常工作,请添加以下代码:

app.get('/register', function(req, res) {
    res.send("It works!");
});

导航到浏览器中的页面是一个
GET
请求。您只为路由
/register
POST
请求定义了一个处理程序:

app.post('/register', function(req, res){
   device_token = req.body.device_token;
   console.log('device token received');
   console.log(device_token);

   res.send('ok');
});
您尚未为
/
路线定义任何内容。因此,当您导航到其中一个时,它会正确地抛出
无法获取
,因为该路由本身没有定义,即
/
,或者该路由的
获取
方法没有定义,即
/register

您可以通过以下方式允许根url(
/
)上的
GET
请求:

对于
/register
路由,您不应该使用
GET
请求,因为您需要在请求正文中发送信息以实际注册用户。(只有post请求允许此操作)


您已经正确设置了它。你不能在浏览器中查看它。使用或curl测试它是否有效。

我对node js express一无所知,但他们的文档显示在定义处理程序后调用listen()-如果这样做是否有效?似乎没有什么区别。我可以定义app.get(“/”)然后定义app.post吗(“/register”…?当然可以。除非您使用的是
next
,否则各种路由的放置顺序并不重要。是的,这是有意义的。但是,当我在控制台中查看时,我发现:无法加载resource@BillPope,您无法在客户端上加载服务器的路由。您只能在客户端上加载文件。这就是为什么您看到fai由于没有可加载的内容,导致加载资源。您应该使用类似于。
$.ajax('/register',data)的内容发布到服务器的路由
我在postman中尝试过,但此部分失败:device\u token=req.body.device\u token;您必须以x-www-form-urlencoded的形式发送post请求。@BillPope express没有附带正文解析器中间件。您必须安装一个。您可以使用。有关详细信息,请查看express文档:
app.get('/', function(req, res){
  res.send('Hello!')
})