【问题标题】:Can't find variable: URLSearchParams找不到变量:URLSearchParams
【发布时间】:2019-04-05 22:00:40
【问题描述】:

在 React Native 中,我想做一个 URLSearchParams 的抽象,所以我写了这个类:

export class HttpSearchParamsAdapter extends URLSearchParams implements HttpSearchParams {

constructor() {
    super();
}

set(param: string, val: string): void {
    super.set(param, val);
    }
}

但是当我构建应用程序时,我有这个错误:找不到变量:URLSearchParams。我使用 es6 的 URLSearchParams。

【问题讨论】:

  • 你是如何导入/定义 URLSearchParams 的?
  • 我没有导入
  • 你的构建步骤是什么?
  • 什么意思?目前我使用 xcode 的 iPhone 模拟器,并使用 tsc 构建
  • 我用 polyfill 解决了

标签: javascript


【解决方案1】:

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

例如,我在使用wretch 时遇到了问题,所以我全局使用了这个polyfill:url-search-params-polyfill

// index.js
import 'url-search-params-polyfill';

更新(适用于 React Native 0.59)

在 React Native 0.59 中,开发人员用throw new Error('not implemented');“实现”了URLSearchParams 的一些方法,所以......它惨遭失败。

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

我们可以使用whatwg-url 实现和buffer 包代替我使用的polyfill,如下所述: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;

【讨论】:

    【解决方案2】:

    URLSearchParams 在 iOS 中不受支持。 https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams

    【讨论】:

    • 此外,在我的情况下,启用“远程 JS 调试”令人惊讶地使 URLSearchParams 工作!但是在禁用/构建生产后不久,它变得无法使用,不幸的是可能很难调试。 (RN 0.56)
    • 远程 js 调试使其工作的原因是因为该模式将 chrome 用于 js 代码而不是实际的模拟器
    猜你喜欢
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 2016-04-30
    • 2020-07-06
    • 2021-03-25
    相关资源
    最近更新 更多