未捕获的模块插件已定义 - Cordova 9.0
Uncaught module plugin already defined - Cordova 9.0
我正在使用 Cordova CLI 9.0、Cordova-Android 9.0 和一个 Ionic 4 Web 应用程序。它运行正常,但我的插件不断收到这些错误:
"Uncaught module cordova-plugin-splashscreen.SplashScreen already defined"
"Uncaught module cordova-plugin-statusbar.statusbar already defined"
"Uncaught module org.apache.cordova.plugin.bluetooth.bluetooth already defined"
"Uncaught module cordova-plugin-geolocation.geolocation already defined"
"Uncaught module cordova-plugin-device.device already defined"
"Uncaught module org.apache.cordova.plugin.platformevent.platformEvent"
"Uncaught module de.fastr.phonegap.plugins.injectView.inject already defined"
"Uncaught module org.apache.cordova.plugin.platformevent.msrEvent already defined"
"Uncaught module cordova-plugin-screen-orientation.screenorientation"
"Uncaught module cordova-plugin-geolocation.PositionError already defined"
"Uncaught module cordova-plugin-inappbrowser.inappbrowser already defined"
我已经查看了多个 Whosebug 问题,包括下面发布的 2 个问题,但似乎都不是我的问题:
Error in Phonegap Application: Uncaught module cordova/plugin_list already defined
我看到 cordova_plugins.js 仅在位于以下位置的 Injecter.java 文件中的三个位置被引用:
- (Cordova 包装器)/android/plugins/de.fastr.phonegap.plugins.injectView/src/android/engine/Injecter.java
- (Cordova 包装器)/android/app/src/main/java/de/fastr/phonegap/plugins/Injecter.java
- (离子网络应用)/internal_plugins/injectview-cordova-plugin/src/android/engine/Injecter.java
如:
InputStream ims = assetManager.open("www/cordova_plugins.js");
我是否需要删除这些引用之一?或者您对可能导致此错误的原因有任何其他想法吗?另外,这个错误是否会降低我的应用程序的速度?它似乎只发生在初始加载时。它看起来像是一个简单的抛出错误,同时检查它是否已经存在。这是它陷入的错误代码:
define = function (id, factory) {
if (Object.prototype.hasOwnProperty.call(modules, id)) {
throw new Error('module ' + id + ' already defined');
}
modules[id] = {
id: id,
factory: factory
};
};
感谢您的帮助!如果您需要任何其他信息来更好地理解这个问题,请告诉我!
我找到了 2 个在 cordova_plugins 上调用函数的不同位置。我从 phonegap/plugins Injecter 中注释掉了这些函数,它似乎消除了所有错误。
Injecter.getInstance().injectJavascriptFile("www/cordova");
Injecter.getInstance().injectJavascriptFile("www/cordova_plugins");
Injecter.getInstance().parseCordovaPlugins();
Injecter.getInstance().injectJavascriptFile("www/js/index");
也许它以某种方式安装到 2 个不同的位置,但并不需要安装?不确定其他人是否会 运行 这样做,但以防万一。
我正在使用 Cordova CLI 9.0、Cordova-Android 9.0 和一个 Ionic 4 Web 应用程序。它运行正常,但我的插件不断收到这些错误:
"Uncaught module cordova-plugin-splashscreen.SplashScreen already defined"
"Uncaught module cordova-plugin-statusbar.statusbar already defined"
"Uncaught module org.apache.cordova.plugin.bluetooth.bluetooth already defined"
"Uncaught module cordova-plugin-geolocation.geolocation already defined"
"Uncaught module cordova-plugin-device.device already defined"
"Uncaught module org.apache.cordova.plugin.platformevent.platformEvent"
"Uncaught module de.fastr.phonegap.plugins.injectView.inject already defined"
"Uncaught module org.apache.cordova.plugin.platformevent.msrEvent already defined"
"Uncaught module cordova-plugin-screen-orientation.screenorientation"
"Uncaught module cordova-plugin-geolocation.PositionError already defined"
"Uncaught module cordova-plugin-inappbrowser.inappbrowser already defined"
我已经查看了多个 Whosebug 问题,包括下面发布的 2 个问题,但似乎都不是我的问题:
Error in Phonegap Application: Uncaught module cordova/plugin_list already defined
我看到 cordova_plugins.js 仅在位于以下位置的 Injecter.java 文件中的三个位置被引用:
- (Cordova 包装器)/android/plugins/de.fastr.phonegap.plugins.injectView/src/android/engine/Injecter.java
- (Cordova 包装器)/android/app/src/main/java/de/fastr/phonegap/plugins/Injecter.java
- (离子网络应用)/internal_plugins/injectview-cordova-plugin/src/android/engine/Injecter.java
如:
InputStream ims = assetManager.open("www/cordova_plugins.js");
我是否需要删除这些引用之一?或者您对可能导致此错误的原因有任何其他想法吗?另外,这个错误是否会降低我的应用程序的速度?它似乎只发生在初始加载时。它看起来像是一个简单的抛出错误,同时检查它是否已经存在。这是它陷入的错误代码:
define = function (id, factory) {
if (Object.prototype.hasOwnProperty.call(modules, id)) {
throw new Error('module ' + id + ' already defined');
}
modules[id] = {
id: id,
factory: factory
};
};
感谢您的帮助!如果您需要任何其他信息来更好地理解这个问题,请告诉我!
我找到了 2 个在 cordova_plugins 上调用函数的不同位置。我从 phonegap/plugins Injecter 中注释掉了这些函数,它似乎消除了所有错误。
Injecter.getInstance().injectJavascriptFile("www/cordova");
Injecter.getInstance().injectJavascriptFile("www/cordova_plugins");
Injecter.getInstance().parseCordovaPlugins();
Injecter.getInstance().injectJavascriptFile("www/js/index");
也许它以某种方式安装到 2 个不同的位置,但并不需要安装?不确定其他人是否会 运行 这样做,但以防万一。