首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在节点中使用全局URLSearchParams

如何在节点中使用全局URLSearchParams
EN

Stack Overflow用户
提问于 2017-11-13 22:23:45
回答 2查看 31.7K关注 0票数 33

我正在编写一个(客户端) JavaScript库(一个节点/角度模块)。在这个库中,我使用了URLSearchParams类。

代码语言:javascript
复制
const form = new URLSearchParams();
form.set('username', data.username);
form.set('password', data.pass);

因为这是一个共享库,所以它被打包为npm模块。但是,在运行mocha单元测试时,我得到的错误是URLSearchParams未定义。原因似乎是节点在全局范围内没有URLSearchParams,但必须使用require('url')导入

代码语言:javascript
复制
$ node
> new URLSearchParams()
ReferenceError: URLSearchParams is not defined
    at repl:1:5
    at sigintHandlersWrap (vm.js:22:35)
    at sigintHandlersWrap (vm.js:73:12)
    at ContextifyScript.Script.runInThisContext (vm.js:21:12)
    at REPLServer.defaultEval (repl.js:340:29)
    at bound (domain.js:280:14)
    at REPLServer.runBound [as eval] (domain.js:293:12)
    at REPLServer.<anonymous> (repl.js:538:10)
    at emitOne (events.js:101:20)
    at REPLServer.emit (events.js:188:7)

如何使URLSearchParams对node中的客户端代码可用,以便我可以使用mocha测试库?

这不起作用:

代码语言:javascript
复制
> global.URLSearchParams = require('url').URLSearchParams
undefined
> new URLSearchParams()
TypeError: URLSearchParams is not a constructor
    at repl:1:1
    at sigintHandlersWrap (vm.js:22:35)
    at sigintHandlersWrap (vm.js:73:12)
    at ContextifyScript.Script.runInThisContext (vm.js:21:12)
    at REPLServer.defaultEval (repl.js:340:29)
    at bound (domain.js:280:14)
    at REPLServer.runBound [as eval] (domain.js:293:12)
    at REPLServer.<anonymous> (repl.js:538:10)
    at emitOne (events.js:101:20)
    at REPLServer.emit (events.js:188:7)
EN

回答 2

Stack Overflow用户

发布于 2019-04-10 15:07:39

在使用Node8.10的AWS Lambda中,我必须这样做:

代码语言:javascript
复制
const {URLSearchParams} = require('url')
const sp = new URLSearchParams(request.querystring)

代码语言:javascript
复制
const url = require('url')
const sp = new url.URLSearchParams(request.querystring)
票数 9
EN

Stack Overflow用户

发布于 2019-07-09 14:03:59

如果我们想在我们的应用程序中支持大范围的nodejs版本,我们可以使用一些脏代码,如下所示:

代码语言:javascript
复制
if(typeof URLSearchParams === 'undefined'){
    URLSearchParams = require('url').URLSearchParams;
}

注意:使用条件执行require不是最佳实践。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47266550

复制
相关文章

相似问题

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