1

我想为 Android 和 iOS 制作一个 ionic webdav 应用程序。所以我安装了节点模块webdav并创建了一个新的登录页面。在我的 login.ts 中,我添加了如下模块:

import * as WebDAV from 'webdav';

@Component({
    selector: 'page-login',
    templateUrl: 'login.html'
})

export class LoginPage {

    cunstructor() {
        var webdav = WebDAV;  // On this code snippet the error appears
    }
}

当我尝试访问模块时,出现错误

undefined is not an object (self.fetch.bind)

这是一个截图:undefined is not an object (self.fetch.bind)

此错误仅出现在 iOS 模拟器上,而不会出现在 Android 上。以下我已经尝试过:

  • 搜索相同或相似的问题
  • 重新安装所有 node_modules
  • 重新安装科尔多瓦插件
  • 导入 webdav 模块require()
  • 删除了我项目中所有不必要的页面


环境信息:
离子:

  • 离子 CLI:4.1.2
  • 离子框架:离子角 3.9.2
  • @ionic/app-scripts:3.2.0

科尔多瓦:

  • 科尔多瓦 CLI:8.1.1
  • Cordova 平台:ios 4.5.5
  • 科尔多瓦插件:
    • 科尔多瓦插件离子键盘 2.1.3
    • 科尔多瓦-插件-离子-webview 2.2.0
    • 科尔多瓦插件设备
    • 科尔多瓦插件启动画面
    • 科尔多瓦状态栏
    • 科尔多瓦白名单

系统:

  • 节点JS:v8.12.0
  • npm:6.4.1
  • 操作系统:OS X El Capitan
  • Xcode:Xcode 8.2.1 构建版本 8C1002

有谁知道我该如何解决这个错误?


编辑:
我发现问题发生在 node-fetch / browser.js 中:

"use strict";

module.exports = exports = self.fetch;

// Needed for TypeScript and Webpack
exports.default = self.fetch.bind(self);

exports.Headers = self.Headers;
exports.Request = self.Request;
exports.Response = self.Response;

我在 ReactNative Repo 等上发现了一些文章和问题。但这些变通方法对我不起作用。还评论一切都没有奏效。

也许有人有想法?

4

0 回答 0