首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError: res.writeHead不是函数第6章使用MEAN进行全栈javascript开发

TypeError: res.writeHead不是函数第6章使用MEAN进行全栈javascript开发
EN

Stack Overflow用户
提问于 2016-11-19 20:12:41
回答 1查看 9.3K关注 0票数 1

所以我跟随Sitepoint提供的完整的Stack Javascript开发,我遇到了一个在第6章中发现的问题。我已经设置了一个基本的http服务器,它应该允许传入连接。

当我运行index.js时,我在控制台上看到一条日志,说它在我指定的地址成功运行(127.0.0.1:1337)

只要我尝试在浏览器中访问该地址,它就无法连接,并且在我的终端中出现以下错误

代码语言:javascript
复制
TypeError: Cannot read property 'toUpperCase' of undefined
at Server.<anonymous> (/Users/user/Documents/Git projects/human-resources/index.js:8:26)
at emitTwo (events.js:106:13)
at Server.emit (events.js:191:7)
at HTTPParser.parserOnIncoming [as onIncoming] (_http_server.js:543:12)
at HTTPParser.parserOnHeadersComplete (_http_common.js:105:23)

很明显这条线路有问题

代码语言:javascript
复制
req.method = req.method.toUpperCase();

但我不知道为什么,我想如果我注释掉它可能会起作用,但当我这样做时,我得到了一个类似于上面的错误,但这一次显示res.writeHead不是一个函数

代码语言:javascript
复制
TypeError: res.writeHead is not a function
at Server.<anonymous> (/Users/user/Documents/Git projects/human-resources/index.js:12:9)
at emitTwo (events.js:106:13)
at Server.emit (events.js:191:7)
at HTTPParser.parserOnIncoming [as onIncoming] (_http_server.js:543:12)
at HTTPParser.parserOnHeadersComplete (_http_common.js:105:23)

如果任何人能提供一些关于我或我的代码哪里出错的见解,那就太好了,我的完整代码列在下面。

代码语言:javascript
复制
var http = require('http');

http.createServer(function (res,req) {
  //A parsed url to work with in case there are parameters
  var _url;

  //In case the client uses lower case for methods
  req.method = req.method.toUpperCase();
  console.log(req.method + ' ' + req.url);

  if (req.method !== 'GET') {
    res.writeHead(501, {
      'Content-Type': 'text/plain'
    });

    return res.end(req.method + ' is not implemented by this server');
  }

  if (_url = /^\/employees$/i.exec(req.url)) {
    //return a list of employees
    res.writeHead(200);
    return res.end('employee list');
  } else if (_url = /^\/employees\/(\d+)$/i.exec(req.url)) {
    //find employee by id in the route
    res.writeHead(200);
    return res.end('a single employee');
  } else {
    //try to send the static file
    res.writeHead(200);
    return res.end('static file maybe');
  }

}).listen(1337, '127.0.0.1');

console.log('Sever Running at http://127.0.0.1:1337/');
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-19 22:03:38

我在http.createServer()中错误地使用了请求和响应,我使用了response然后request,应该是request然后response,就像这样;

代码语言:javascript
复制
http.createServer(function (req,res) {
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40692730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档