使用NFC库时,Ionic docs建议 (https://github.com/chariotsolutions/phonegap-nfc) (https://ionicframework.com/docs/native/nfc)尝试通过'ionic serve --devapp'CLI命令到达我的Android One Plus上调用ndef或nfc提供程序的组件中的代码时,出现“未安装插件”错误。它还说devapp不支持此插件,但是我不清楚在这种情况下应该如何明智地使用此包测试。
按照这篇文章对Ionic 3的建议指定了版本4之后,出现了另一个错误。这是在安装了rxjs-compat的情况下进行的,除了模块和组件中的导入以及向构造函数中的注入之外,没有实际使用任何nfc / ndef代码。
这是使用“从'@ ionic-native / nfc'导入{Ndef,NFC}”;而不是上面的/ nfc / ngx。
Uncaught TypeError: Object(...) is not a function
at index.js:405
at Module../node_modules/@ionic-native/nfc/index.js (index.js:599)
at __webpack_require__ (bootstrap:84)
at Module../src/app/app.module.ts (app.component.ts:12)
at __webpack_require__ (bootstrap:84)
at Module../src/main.ts (main.ts:1)
at __webpack_require__ (bootstrap:84)
at Object.0 (main.ts:12)
at __webpack_require__ (bootstrap:84)
at checkDeferredModules (bootstrap:45)
当我尝试构建应用而不是与devapp一起提供时,即使我在Windows 10上的Android Studio中运行该应用,并且同时具有我的Java,Android和Gradle路径,也会遇到此错误(可能不相关)在我的环境变量中定义。
ANDROID_HOME=C:\Users\Sam\AppData\Local\Android\sdk
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_181
Could not find an installed version of Gradle either in Android Studio,
or on your system to install the gradle wrapper. Please include gradle
in your path, or install Android Studio
我已在应用模块中添加了导入和提供程序。
import {Ndef, NFC} from '@ionic-native/nfc';
@NgModule({
...
providers: [
NFC,
Ndef,
StatusBar,
SplashScreen,
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
],
这就是我将提供程序注入班级的方式。
import { Component } from '@angular/core';
import {ToastController} from '@ionic/angular';
import {Ndef, NFC} from '@ionic-native/nfc';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage {
constructor(private nfc: NFC, private ndef: Ndef, private toast: ToastController) {
}
也许我完全走错了路,但是遵循文档或类似主题上提供的任何建议线程都无济于事。我要解决这个错误吗?
编辑:在新项目中运行所有内容并确保我完成每个步骤而没有发生任何错误之后,我再次遇到安装插件错误,类似这样。
[ng] [console.warn]: "Install the NFC plugin: 'ionic cordova plugin add phonegap-nfc'"
[ng] [console.warn]: "Native: tried calling NFC.removeNdefListener, but the NFC plugin is not installed."
[ng] [console.warn]: "Install the NFC plugin: 'ionic cordova plugin add phonegap-nfc'"
[ng] [console.log]: "Angular is running in the development mode. Call enableProdMode() to enable the production mode."
[ng] [console.log]: "calling _sync"
[ng] [console.error]: "ERROR" "plugin_not_installed"
[ng] [console.info]: "[WDS] Live Reloading enabled."
[ng] [console.log]: "calling _reload"
[ng] [console.log]: "done _reloading"
[ng] [console.log]: "Ionic Native: deviceready event fired after 836 ms"
仅当在使用serve --devapp服务后在DevApp中打开该应用的Android版本时,此错误才会出现在控制台中。当我在浏览器中运行它时,它没有出现,然后只是给我“ Cordova”不可用的错误,我认为这是某些设备无法使用的插件的标准配置。这是按照确切的逐步过程(包括ionic docs中的代码)完成的。 https://ionicframework.com/docs/native/nfc
EDIT2:这可能与XML处理错误有关。在执行与之前遇到的错误相同的步骤时,我在安装插件时将其解雇了,因为它在Cordova上同时安装了iOS和Android平台后会自行解决。运行“ ionic cordova plugin add phonegap-nfc”命令后,发生以下错误。但是,该插件确实会安装,并且此后列在“ cordova插件列表”下,但安装可能未完全正确完成。例如,该插件未在config.xml中的插件下方列出。
Failed to install 'phonegap-nfc': Error: Unable to graft xml at selector "/manifest/uses-sdk" from "C:\Users\cliem\Desktop\dev\nfctest\nfctest2\platforms\android\app\src\main\AndroidManifest.xml" during config install
at ConfigFile_graft_child [as graft_child] (C:\Users\cliem\Desktop\dev\nfctest\nfctest2\node_modules\cordova-common\src\ConfigChanges\ConfigFile.js:122:19)
答案 0 :(得分:0)
长话短说,请不要使用Java版本超过8。Nfc插件不适用于ionic serve --devapp,需要通过ionic cordova运行android进行测试。需要从chrome:// inspect读取控制台。
答案 1 :(得分:0)
如果您拥有的最新版本的cordova是9.0.0,请尝试 $ sudo npm uninstall -g cordova卸载它并以旧版本重新安装 $ sudo npm卸载-g cordova@8.x
这对我有用