不能在Node.js上使用URL模块,不能调用undefined的方法'解析'

时间:2014-08-20 20:50:45

标签: javascript node.js url

我试图从网址获取参数,例如:

http://localhost:8888/?name=test

要获取name参数,我看到了一些使用url模块的示例,如下所示:

var url = require('url');

var urlParts = url.parse(request.url, true);
var query = urlParts.query;

所以,首先我运行了这个命令npm install url,依赖是在package.json文件上,但我总是得到这个错误:

TypeError: Cannot call method 'parse' of undefined
at C:\Users\Administrator\git\test\app.js:28:7

之前有人遇到过这个问题吗?

3 个答案:

答案 0 :(得分:9)

我发现了问题,我有这样的代码:

var http = require("http");
var url = require('url');

http.createServer(function(request, response) {
    var urlParts = url.parse(request.url, true);
    var query = urlParts.query;
}).listen(appport);

url函数内部无法访问createServer对象(不确定原因),所以我只需替换此行:

var urlParts = url.parse(request.url, true);

用这个:

var url_urlParts = require('url').parse(request.url, true);

现在工作正常。

答案 1 :(得分:1)

这也是我的一点 - 我的问题是url.parse与本地var url冲突。我这样解决了:

import { parse as urlparse } from 'url'
var url = 'https://localhost:80'
var parsed_url = urlparse(url)

感谢@loganfsmyth提供见解!

答案 2 :(得分:0)

function parse(urlStr: string, parseQueryString: true, slashesDenoteHost?: boolean): UrlWithParsedQuery (+3 重载) @deprecated — 从 v11.0.0 开始 - 使用 WHATWG URL API。

'(urlStr: string, parseQueryString: true, slashesDenoteHost?: boolean): UrlWithParsedQuery' is deprecated.ts(6385) url.d.ts(51, 9): 声明在这里被标记为已弃用。