cordova/exec 在流星项目中失败
Posted
技术标签:
【中文标题】cordova/exec 在流星项目中失败【英文标题】:cordova/exec fails within meteor project 【发布时间】:2021-09-28 02:12:24 【问题描述】:使用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结构包含app路径下的plugin文件夹
我使用meteor add cordova:my.plugin.id@file://path/to/plugin/project
安装了这个包
Cordova 版本 10.0.8
我有以下插件结构:
pluginDir/
src/
android/
MyPlugin.java
www/
MyPlugin.js
package.json
plugin.xml
我已经在 Cordova 应用程序中测试了插件,效果很好。
我敢打赌,这里的问题是流星如何暴露内部 Cordova 对象。
【问题讨论】:
【参考方案1】:解决方案
Meteor 已经包装了cordova 对象,因此我无需在/www 插件定义中导入cordova/exec,我只需要使用cordova.exec('my logic goes here')
上面是用plugman
搭建的,/www 文件夹和文件以及上面的代码都会自动生成。
上面的代码在 Cordova 中是有效的,但是在 Meteor 中这个逻辑失败了。
额外cmets
此插件仅需要 Android 支持,cordova.exec()
逻辑已移至 Meteor api 方法中。
由于这个仅限 Android 的要求,/www 文件夹和引用已被删除。
未来可能会重新引入 /www 文件夹,以便为 Web 使用场景定义一个很好的后备方案,但它不太可能用于我们的内部插件。
【讨论】:
以上是关于cordova/exec 在流星项目中失败的主要内容,如果未能解决你的问题,请参考以下文章