> simpleserver@1.0.0 start C:\projects\simpleserver
> node server.js
C:\projects\simpleserver\server.js:19
var url = url.parse(req.url).pathname;
^
TypeError: Cannot read property 'parse' of undefined
at Server.<anonymous> (C:\projects\simpleserver\server.js:19:15)
at emitTwo (events.js:87:13)
at Server.emit (events.js:172:7)
at HTTPParser.parserOnIncoming [as onIncoming] (_http_server.js:533:12)
at HTTPParser.parserOnHeadersComplete (_http_common.js:103:23)
答案 0 :(得分:1)
如果您查看代码,问题是您正在定义一个名为url
的新变量,该变量将覆盖url
模块。
var url = url.parse(req.url).pathname;
这相当于:
var url;
url = url.parse(req.url).pathname;
因此,无论url
来自更高范围的值是什么,您只需覆盖它并创建一个名为url
的新局部变量undefined
,因此没有.parse()
属性。
您可以通过重命名其中一个变量来修复它,使其具有不同的名称,如下所示:
var localUrl = url.parse(req.url).pathname;
答案 1 :(得分:0)
问题的根源是url
未定义。最有可能的是,您打算使用标准url
模块,因此您需要执行类似
var url_m = require('url'); // near the top of your file
... later ...
var url = url_m.parse(req.url).pathname;
我建议使用名称url_m
来表明它是一个模块,但您可以用其他任何内容替换该名称。在某些示例中,您会看到var url = require('url');
,但我没有这样做,因为您有一个不同的变量,您也在调用url
。