我正在尝试使用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>
编辑:我尝试直接从&#34; zeroconf.js&#34;访问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";
}
}
但这显示&#34; ZEROCONF NOT READY&#34; ...
这就是我的索引现在的样子(我只添加了一个带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 -->
然而,现在我不知道&#34; ZeroConf&#34;是未定义的,因为插件存在一些问题,或者因为它无法从内部访问&#34; index.js&#34;因为它包含在&#34; index.html&#34; ?
答案 0 :(得分:3)
检查了cordova-plugin-zeroconf的config.xml和JS file我发现了这个声明:
<js-module src="www/zeroconf.js" name="ZeroConf">
<clobbers target="cambiocreative.CDVZeroConfig" />
</js-module>
因此插件API应该在此名称空间中可用: cambiocreative.CDVZeroConfig
实际上从Cordova Plugins documentation开始:
在<js-module>
中允许...标记
<clobbers target="some.value"/>
表示module.exports是 以window.some.value
的形式插入到窗口对象中。你可以拥有 很多<clobbers>
如你所愿。窗口上没有的任何对象是 创建。 ...
答案 1 :(得分:2)
你所包含的插件可能不使用cordova.plugin窗口。只是尝试调用插件函数,并检查它们是否有效。
答案 2 :(得分:0)
对于那些面对(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>