【问题标题】:Uncaught module plugin already defined - Cordova 9.0已定义未捕获的模块插件 - Cordova 9.0
【发布时间】:2021-06-16 07:26:50
【问题描述】:

我正在使用 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"

我已经查看了多个 stackoverflow 问题,包括下面发布的 2 个,但似乎都不是我的问题:

Cordova plugin error: "Uncaught module ... already defined"

Error in Phonegap Application: Uncaught module cordova/plugin_list already defined

我看到 cordova_plugins.js 仅在位于 Injecter.java 文件中的三个位置被引用:

  • (Cordova Wrapper)/android/plugins/de.fastr.phonegap.plugins.injectView/src/android/engine/Injecter.java
  • (Cordova Wrapper)/android/app/src/main/java/de/fastr/phonegap/plugins/Injecter.java
  • (Ionic Web 应用)/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
    };
};

感谢您的帮助!如果您需要任何其他信息来更好地理解这个问题,请告诉我!

【问题讨论】:

    标签: android cordova plugins


    【解决方案1】:

    我能够找到 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 个不同的位置,但不需要?不确定这是否是其他人会遇到的事情,但只是以防万一。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      • 2016-02-28
      • 1970-01-01
      • 2013-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多