Javascript Phonegap移动应用程序中未定义Socket.io变量
我正在尝试使用Phonegap和RequireJs、主干网、jQuery开发一个移动应用程序,每次尝试包含Javascript Phonegap移动应用程序中未定义Socket.io变量,javascript,cordova,socket.io,requirejs,phonegap-cli,Javascript,Cordova,Socket.io,Requirejs,Phonegap Cli,我正在尝试使用Phonegap和RequireJs、主干网、jQuery开发一个移动应用程序,每次尝试包含RequireJsscript标记时,我都会遇到一个问题: <script data-main="js/app" src="node_modules/requirejs/require.js</script> 我没有使用socket.io,但我认为Phonegap使用它是为了刷新浏览器中的页面 这是我的index.html文件: <!DOCTYPE html>
RequireJs
script标记时,我都会遇到一个问题:
<script data-main="js/app" src="node_modules/requirejs/require.js</script>
我没有使用socket.io
,但我认为Phonegap使用它是为了刷新浏览器中的页面
这是我的index.html
文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="format-detection" content="telephone=no" />
<meta name="msapplication-tap-highlight" content="no" />
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width" />
<!-- This is a wide open CSP declaration. To lock this down for production, see below. -->
<meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline'; style-src 'self' 'unsafe-inline'; media-src *" />
<title>Hello World</title>
</head>
<body>
something nice
<!-- Content -->
<script type="text/javascript" src="cordova.js"></script>
<script data-main="js/app" src="node_modules/requirejs/require.js"></script>
</body>
</html>
requirejs.config({
baseUrl: 'js',
shim: {
'socket.io': {
exports: 'io'
},
'underscore': {
exports: '_'
},
'backbone': {
deps: [
'underscore',
'jquery'
],
exports: 'Backbone'
}
},
paths: {
jquery: 'jquery.min',
underscore: 'lodash.min',
backbone: 'backbone',
socketio: '../socket.io/socket.io'
// package: 'node_modules'
}
// map: {
//
// '*': {
// 'jquery': 'private/jquery'
// },
//
// 'private/jquery': {
// 'jquery': 'jquery'
// }
// }
});
我使用的是Phonegap版本6.3.4
你能告诉我,我该怎么做才能消除这个错误吗
谢谢大家! 我通过阅读以下文章解决了这个问题:
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript">
// Fixes "Uncaught ReferenceError: io is not defined".
// We need to load RequireJs after socket.io has been loaded.
function injectRequireJs() {
var h = document.getElementsByTagName('body')[0];
var s = document.createElement('script');
s.type = 'text/javascript';
s.src = 'node_modules/requirejs/require.js';
s.setAttribute('data-main', 'js/bootstrap');
h.appendChild(s);
}
setTimeout(function(){
injectRequireJs();
}, 1);
</script>
//修复了“未捕获引用错误:未定义io”。
//我们需要在socket.io加载后加载RequireJs。
函数injectRequireJs(){
var h=document.getElementsByTagName('body')[0];
var s=document.createElement('script');
s、 类型='text/javascript';
s、 src='node_modules/requirejs/require.js';
s、 setAttribute('data-main','js/bootstrap');
h、 儿童;
}
setTimeout(函数(){
injectRequireJs();
}, 1);
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript">
// Fixes "Uncaught ReferenceError: io is not defined".
// We need to load RequireJs after socket.io has been loaded.
function injectRequireJs() {
var h = document.getElementsByTagName('body')[0];
var s = document.createElement('script');
s.type = 'text/javascript';
s.src = 'node_modules/requirejs/require.js';
s.setAttribute('data-main', 'js/bootstrap');
h.appendChild(s);
}
setTimeout(function(){
injectRequireJs();
}, 1);
</script>