找不到变量:URLSearchParams

mic*_*elw 8 javascript

在React Native中,我想对URLSearchParams进行抽象,所以我写了这个类:

export class HttpSearchParamsAdapter extends URLSearchParams implements HttpSearchParams {

constructor() {
    super();
}

set(param: string, val: string): void {
    super.set(param, val);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我构建应用程序时,我有这样的错误:无法找到变量:URLSearchParams.我使用es6的URLSearchParams.

Álv*_*mbe 8

正如mrgoos所说,URLSearchParams使用JavaScript Core的 iOS不支持,您可以向React Native添加一个polyfill。

例如,我在使用wretch时遇到问题,因此我全局使用了此polyfill:url-search-params-polyfill

// index.js
import 'url-search-params-polyfill';
Run Code Online (Sandbox Code Playgroud)

更新(适用于React Native 0.59)

在阵营本地0.59,开发商“执行”的一些方法URLSearchParamsthrow new Error('not implemented');如此......这悲惨的失败了。

您可以在这里阅读问题:https : //github.com/facebook/react-native/issues/23922

代替我使用的polyfill,我们可以使用whatwg-url实现和buffer程序包,如下所述:https : //github.com/facebook/react-native/issues/23922#issuecomment-476070032

// index.js
import { URL, URLSearchParams } from 'whatwg-url';
import { Buffer } from 'buffer';

// react-native 0.59 added its own global URLSearchParams without implementation...
// https://github.com/facebook/react-native/blob/e6057095adfdc77ccbbff1c97b1e86b06dae340b/Libraries/Blob/URL.js#L66
// Issue: https://github.com/facebook/react-native/issues/23922
global.Buffer = Buffer;
global.URL = URL;
global.URLSearchParams = URLSearchParams;
Run Code Online (Sandbox Code Playgroud)


mrg*_*oos 6

URLSearchParamsiOS不支持. https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams

  • 此外,在我的情况下,启用"远程JS调试"令人惊讶地使`URLSearchParams`工作!但是在禁用/构建生产后不久它就变得无法使用,遗憾的是可能难以调试.(RN 0.56) (4认同)
  • 远程js调试使其工作的原因是因为该模式将使用chrome作为js代码而不是实际的模拟器 (2认同)