我试图整合AngularJS + RequireJS来制作一个Phonegap项目。我已经在PC上运行,但是当我在Phonegap中构建项目时,我在LogCat中遇到了这些错误:
05-07 13:55:38.008:E / Web Console(10987):未捕获错误:脚本错误:angular 05-07 13:55:38.008:E / Web Console(10987):http://requirejs.org/docs/errors.html#scripterror at file:///android_asset/www/libs/require.js:138
05-07 13:55:45.058:E / Web Console(10987):未捕获错误:模块加载超时:ui.router 05-07 13:55:45.058:E / Web控制台(10987):http://requirejs.org/docs/errors.html#timeout at file:///android_asset/www/libs/require.js:138
Index.html
<script src="libs/require.js"></script>
<script>
require(['require', './js/config-require'], function (require, config) {
config.urlArgs = 'bust=v0.4.0';
window.require.config(config);
require(['./js/main.js']);
});
</script>
配置-require.js
define({
paths: {
'angular' : '../libs/angular',
'async' : '../libs/async',
'domReady' : '../libs/domReady',
'ngResource' : '../libs/angular-resource',
'ui.router' : '../libs/angular-ui-router'
},
shim: {
'angular': {
'exports': 'angular'
},
'ngResource': ['angular'],
'ui.router' : ['angular']
}
});
main.js
define([
'require',
'angular',
'./app'
], function (require, angular) {
'use strict';
require(['domReady!'], function (document) {
angular.bootstrap(document, ['app']);
});
});
app.js
define([
'angular',
'ui.router',
'./config',
'./modules/home/index'
], function (ng) {
'use strict';
return ng.module('app', [
'app.constants',
'app.home',
'ui.router'
]).config(['$urlRouterProvider', function ($urlRouterProvider) {
$urlRouterProvider.otherwise('/');
}]);
});
任何人都可以帮我配置它吗?
答案 0 :(得分:0)
解决方案是在config-require.js文件中设置baseUrl
答案 1 :(得分:-1)
使用 SeaJs + AngularJs 代替
最近我试图在cordova中实现requirejs。我在这里查看了大部分相关文章,这些解决方案都没有。
所以我转向尝试Seajs,Seajs遵循CommonJS Spec,与Nodejs完全相同。
在 Sea.js 源代码中,将define
替换为global.define = Module.define
,隐藏全局seajs.define = Module.define
方法。
<script type="text/javascript" src="sea-debug.js"></script>
<script>
seajs.config({
alias: {// similar to shim as in requirejs
"angular": "lib/angular.js"
}
});
seajs.use('app.js', function(app) {
app();
});
</script>
app.js中的
seajs.define(function(require, exports, module) {
module.exports = function() {
require('angular');//angular is loaded, you can use angular directly
var app = angular.module('App',[]);
require('./test.js')();//test test test
};
});
在test.js
中seajs.define(function(require, exports, module) {
module.exports = function() {
console.log('test test test');
};
});
然后你准备好了!