[英]Cordova plugin javascript gets corrupted when added to project
我寫了一個小的Cordova插件,將其添加到另一個Cordova項目后會損壞。 這個插件基本上是用Java語言包裝的本地iOS核心數據。 公開這些功能的Javascript文件是已損壞的文件。
原始文件如下:
cordova.define("com.aga.cordova.plugin.ioscoredata.plugincoredata", function(require, exports, module) { var exec = require('cordova/exec'),
cordova = require('cordova');
var plugincoredata = {
saveJSON: function(successCallback, errorCallback, tableName, json) {
exec(successCallback, errorCallback, "PluginCoreData", "saveJSON", [tableName, json]);
},
loadJSON: function(successCallback, errorCallback, tableName, extraColumns) {
exec(successCallback, errorCallback, "PluginCoreData", "loadJSON", [tableName, extraColumns]);
},
clear: function(successCallback, errorCallback, tableName) {
exec(successCallback, errorCallback, "PluginCoreData", "clear", [tableName]);
}
};
module.exports = plugincoredata;
});
該文件已正確復制到項目的plugins
文件夾中,但是由於某些原因,在復制到platform/ios/ProjectName/www/plugin/PluginName/js/plugincoredata.js
時,該文件被錯誤地修改了(運行cordova prepare
后platform/ios/ProjectName/www/plugin/PluginName/js/plugincoredata.js
發生同樣的情況)。 該文件看起來像這樣:
cordova.define("com.aga.cordova.plugin.ioscoredata.plugincoredata", function(require, exports, module) {
cordova.define("com.aga.cordova.plugin.ioscoredata.plugincoredata", function(require, exports, module) { var exec = require('cordova/exec'),
cordova = require('cordova');
var plugincoredata = {
saveJSON: function(successCallback, errorCallback, tableName, json) {
exec(successCallback, errorCallback, "PluginCoreData", "saveJSON", [tableName, json]);
},
loadJSON: function(successCallback, errorCallback, tableName, extraColumns) {
exec(successCallback, errorCallback, "PluginCoreData", "loadJSON", [tableName, extraColumns]);
},
clear: function(successCallback, errorCallback, tableName) {
exec(successCallback, errorCallback, "PluginCoreData", "clear", [tableName]);
}
};
module.exports = plugincoredata;
});
});
如您所見,定義已重復。
有什么想法嗎? 我的理解是Cordova應該只復制javascript文件而不對其進行更改。
從模塊化的角度來看,在原始JS文件中不調用define
實際上是有道理的,因為該文件不需要知道其所在的模塊(插件)的名稱。僅當該JS嵌入在插件中時,其中有一個名稱/標識符,Cordova需要對其進行定義,以將其耦合到實際的插件。
如果您查看Cordova提供的插件,您將看到相同的模式,JS文件不會define
自己,僅當將它們添加到平台時才添加define
調用。 例如看
<root>/plugins/org.apache.cordova.device/www/devices.js
比較一下
<root>/platforms/ios/www/plugins/org.apache.cordova.device/www/devices.js
后者具有define
調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.