[英]Cordova plugins undefined
我正在嘗試為 Cordova 使用 ZeroConf 插件。 我以前從未使用過任何 Cordova 插件。
這些是我做的步驟:
cordova create myApp
cordova platform add android
cordova platform add ios
cordova platform add browser
cordova plugins add https://github.com/cambiocreative/cordova-plugin-zeroconf
之后,我更改了默認的onDeviceReady
函數,以便“index.js”文件(在myApp/www/
目錄中)如下所示:
var app = {
...
onDeviceReady: function() {
app.receivedEvent('deviceready');
if(cordova && cordova.plugins) {
console.log('cordova.plugins is available');
} else {
console.log('cordova.plugins NOT available');
}
},
...
};
app.initialize();
不幸的是,它總是記錄“cordova.plugins 不可用”。 我首先檢查了cordova
存在並且確實存在,但是cordova.plugins
是未定義的。 請注意,我正在瀏覽器( cordova run browser
)中對此進行測試以找到問題,一旦cordova.plugins
不再未定義,我將能夠使用ZeroConf插件。
我搜索了幾個小時,閱讀了很多類似的主題,但沒有一個對我有幫助。
我試過的:
cordova plugin ls
--> ZeroConf 插件存在com.cambiocreative.cordova.plugin.zeroconf 1.0.9 "Cordova ZeroConf Plugin"
驗證index.html
加載了cordova.js
腳本
我編輯了config.xml
文件(在myApp/www/config.xml
)並添加了<plugin name="com.cambiocreative.cordova.plugin.zeroconf" version="1" />
,但這沒有幫助。 也試過<feature name="ZeroConf"><param name="android-package" value="com.cambiocreative.cordova.plugin.ZeroConf" /><param name="onload" value="true" /></feature>
沒有成功。
這是我在index.html
(在myApp/www/index.html
)中包含腳本的順序:
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
編輯:我嘗試直接從“zeroconf.js”文件訪問ZeroConf
對象,但沒有成功。
我編輯了onDeviceReady
函數:
onDeviceReady: function() {
app.receivedEvent('deviceready');
var el = document.getElementById("zcOK");
if(typeof ZeroConf !== 'undefined') {
el.innerHTML = "ZEROCONF READY";
} else {
el.innerHTML = "ZEROCONF NOT READY";
}
}
但這會顯示“ZEROCONF NOT READY”...
這就是我的索引現在的樣子(我只添加了一個帶有id="zcOK"
的段落來顯示上面的內容)。
<p id="zcOK">ZeroConf test</p>
<!-- ORDER IN WHICH THE SCRIPTS ARE LOADED -->
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="../plugins/com.cambiocreative.cordova.plugin.zeroconf/www/zeroconf.js"></script>
<script type="text/javascript" src="js/index.js"></script> <!-- Contains the onDeviceReady function -->
但是,現在我不知道“ZeroConf”是否未定義是因為插件存在一些問題,還是因為它包含在“index.html”中而無法從“index.js”中訪問?
檢查config.xml和 cordova-plugin-zeroconf 的JS 文件,我發現了這個聲明:
<js-module src="www/zeroconf.js" name="ZeroConf">
<clobbers target="cambiocreative.CDVZeroConfig" />
</js-module>
所以插件 API 應該在這個命名空間可用: cambiocreative.CDVZeroConfig
事實上,截至Cordova 插件文檔:
...
<js-module>
中允許使用標簽:
<clobbers target="some.value"/>
表示 module.exports 作為window.some.value
插入到 window 對象中。 您可以擁有<clobbers>
。 創建窗口上不可用的任何對象。 ...
可能您包含的插件不使用 cordova.plugin 窗口。 只需嘗試調用插件函數,然后檢查它們是否有效。
對於那些面臨(cordova.plugins === undefined)
,但 100% 應該是。
/src/plugins/plugin_name/plugin.xml
找到這樣的標簽:
<js-module src="www/plugin_name.js" name="Plugin_name">
<clobbers target="cordova.plugins.plugin_name" />
</js-module>
/scr/config.xml
如果標簽不存在,只需在</widget>
之前復制粘貼它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.