【问题标题】:TypeScript Cannot find name 'ClassName' even-though exported Ionic 3即使导出了 Ionic 3,TypeScript 也找不到名称“ClassName”
【发布时间】:2019-06-20 00:03:25
【问题描述】:

我必须在我的 Ionic 3 应用程序中使用某些插件,但它给出了找不到名称错误。我导入了

import { AndroidPermissions } from '@ionic-native/android-permissions';

然后在构造函数(public androidPermissions: AndroidPermissions) 中声明,它会给出错误([ts] Cannot find name 'AndroidPermissions'.)

在 app.module.ts 中声明相同的插件并在 Provider 中声明时,它给出了错误

[ts]
Type 'AndroidPermissionsOriginal' is not assignable to type 'Provider'.
Type 'AndroidPermissionsOriginal' is missing the following properties from type 'FactoryProvider': provide, useFactory [2322]

看了论坛,我用ngx导入了插件。

import { AndroidPermissions } from '@ionic-native/android-permissions/ngx'

错误已解决,但在调用时会引发错误

Uncaught (in promise): TypeError: Object(...) is not a function
TypeError: Object(...) is not a function
    at AndroidPermissions.requestPermissions (http://192.168.0.13:8100/build/vendor.js:69796:154)
    at http://192.168.0.13:8100/build/main.js:138:32
    at t.invoke (http://192.168.0.13:8100/build/polyfills.js:3:14976)
    at Object.onInvoke (http://192.168.0.13:8100/build/vendor.js:5134:33)
    at t.invoke (http://192.168.0.13:8100/build/polyfills.js:3:14916)
    at r.run (http://192.168.0.13:8100/build/polyfills.js:3:10143)
    at http://192.168.0.13:8100/build/polyfills.js:3:20242
    at t.invokeTask (http://192.168.0.13:8100/build/polyfills.js:3:15660)
    at Object.onInvokeTask (http://192.168.0.13:8100/build/vendor.js:5125:33)
    at t.invokeTask (http://192.168.0.13:8100/build/polyfills.js:3:15581)

使用Network pluginSMS plugin 时发生类似错误。

还尝试将目标更改为 es6 和 jib 以在 tsconfig.json 中包含 es2016,但注意到有效。 下面是我的 tsconfig.json

{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "declaration": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": [
      "dom",
      "es2015"
    ],
    "module": "es2015",
    "moduleResolution": "node",
    "sourceMap": true,
    "target": "es5"
  },
  "include": [
    "src/**/*.ts"
  ],
  "exclude": [
    "node_modules",
    "src/**/*.spec.ts",
    "src/**/__tests__/*.ts"
  ],
  "compileOnSave": false,
  "atom": {
    "rewriteTsconfig": false
  }
}

【问题讨论】:

    标签: angular typescript ionic3 ionic-native ionic-plugins


    【解决方案1】:

    如果您使用的是 ionic 版本 3(不是最新版本),请参阅下面提到的文档 https://ionicframework.com/docs/v3/native/android-permissions/

    先删除
    离子cordova插件删除cordova-plugin-android-permissions

    重新添加

    $ ionic cordova plugin add cordova-plugin-android-permissions

    $ npm install --save @ionic-native/android-permissions@4

    【讨论】:

    • 我迁移到 Ionic 4 并使用带有 ngx 前缀的导入。谢谢。
    【解决方案2】:

    试试这些命令 - 删除 package-lock.json

    ionic cordova platform remove android npm install ionic cordova platform add android@6.3.0 ionic cordova plugin add cordova-plugin-android-permissions npm install --save @ionic-native/android-permissions@4

    【讨论】:

    • 我迁移到 Ionic 4 并使用带有 ngx 前缀的导入。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 2019-05-22
    • 2020-05-06
    • 1970-01-01
    • 2019-02-20
    相关资源
    最近更新 更多