cordova/exec 在流星项目中失败

cordova/exec fails within meteor project

在使用 plugman 构建 Cordova 插件后,将其安装在 meteor 2.3.2 和 运行 meteor run android-build 中,我在插件中收到以下错误:

Unable to resolve some modules:

  "cordova/exec" in ~/MeteorApp/MyPlugin/www/MyPlugin.js (web.browser)

错误行来自生成MyPlugin.js

中的第2行
// ~/MeteorApp/MyPlugin/www/MyPlugin.js


// I added this check for cordova myself

if (cordova && cordova.exec ) {
    var exec = require('cordova/exec');
    exports.coolMethod = function (arg0, success, error) {
        exec(success, error, 'MyPlugin', 'coolMethod', [arg0]);
    };
}

我的 meteor 结构包括应用程序路径中的插件文件夹

我使用 meteor add cordova:my.plugin.id@file://path/to/plugin/project

安装了软件包

科尔多瓦版本 10.0.8

我有以下插件结构:

pluginDir/
   src/
      android/
         MyPlugin.java
   www/
      MyPlugin.js
   package.json
   plugin.xml

我已经在 Cordova 应用程序中测试了该插件,效果很好。

我敢打赌这里的问题是 meteor 如何公开内部 Cordova 对象。

解决方案

Meteor 已经包装了 cordova 对象,所以实际上我不必在 /www 插件定义中导入 cordova/exec,我只需要使用 cordova.exec('my logic goes here')

上面的内容是 plugman 的脚手架,自动生成 /www 文件夹和文件,以及上面的代码。

以上代码在 Cordova 中有效,但此逻辑在 Meteor 中失败。

额外评论

此插件只需要 Android 支持,cordova.exec() 逻辑已移至 Meteor api 方法中。

因为这个 Android-only 要求删除了 /www 文件夹和引用。

将来可能会重新引入 /www 文件夹,以便为 Web 使用场景定义一个很好的回退,但不太可能用于我们的内部插件。