【问题标题】:Can't use URL module on Node.js, cannot call method 'parse' of undefined无法在 Node.js 上使用 URL 模块,无法调用未定义的“解析”方法
【发布时间】:2014-08-20 20:50:44
【问题描述】:

我正在尝试从 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

有人遇到过这个问题吗?

【问题讨论】:

  • console.log(url); 的输出是什么?
  • 我发现了问题(请参阅下面的评论),感谢您的时间:)

标签: javascript node.js url


【解决方案1】:

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

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);

现在工作正常。

【讨论】:

  • 您是否在某个地方的createServer 回调中还有第二个var url
  • 我对您的解决方案唯一关心的是require 是节点中为数不多的同步方法之一(当它显然不是时它是一场噩梦)所以您在处理程序中进行阻塞调用。这可能是也可能不是问题,因为它也非常智能并且可以缓存请求的文件。只是可能想验证一下。
  • 谢谢约翰,我不知道,我要仔细看看这个
【解决方案2】:

这也是我的问题 - 我的问题是 url.parse 与本地变量 url 冲突。我是这样解决的:

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

感谢@loganfsmyth 的洞察!

【讨论】:

    【解决方案3】:

    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): 该声明在此处被标记为已弃用。

    【讨论】:

    • DEP0116:旧版 URL API# 历史版本更改 v15.13.0 已弃用。状态更改为“旧版”。 v11.0.0 仅文档弃用。类型:弃用已撤销 旧版 URL API 已弃用。这包括 url.format()、url.parse()、url.resolve() 和旧版 urlObject。请改用 WHATWG URL API。
    猜你喜欢
    • 2015-04-03
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多