【发布时间】:2020-02-06 23:29:46
【问题描述】:
使用 NFC 库时,Ionic 文档推荐 (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) {
}
也许我在这方面完全走错了路,但是遵循文档或类似主题上可用的任何建议线程并没有导致任何地方。我接近这个错误吗?
编辑:在一个新项目中运行所有内容并确保我完成每一步都没有犯任何错误后,我再次以 INSTALL PLUGIN ERROR 告终,就像这样。
[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”不可用错误,我想这是在某些设备上不起作用的插件的标准。这是按照确切的分步过程完成的,包括离子文档中的代码。 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)
【问题讨论】:
-
你能列出你安装插件的步骤吗?您使用的是哪个 rxjs 版本?
-
通过 CLI,在我的项目中我做了
ionic cordova plugin add phonegap-nfc npm install @ionic-native/nfc我最初没有指定我使用的任何版本,所以我假设我正在使用 Ionic4 和 Angular 的最新版本/组合运行. -
我在问rxjs版本。
-
我使用的是 rxjs 6.5.3。
-
试试这个并检查 npm i rxjs@^6.0 rxjs-compat
标签: android angular cordova ionic-framework gradle