我必须在我的Ionic 3应用程序中使用某些插件,但它给出了找不到名称错误.我进口了
从’@ ionic-native / android-permissions’导入{AndroidPermissions};
并在构造函数中声明(公共androidPermissions:AndroidPermissions),它给出了一个错误([ts]找不到名称’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 plugin和SMS 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 } }
解决方法
如果您使用离子版本3(不是最新的版本)请参考下面提到的文档
https://ionicframework.com/docs/v3/native/android-permissions/
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