由于项目中的FUBAR目录组织,我花了一些时间在所述项目上重新组织JS脚本。该项目使用requirejs,并且在重新组织之前运行良好。但是,现在在运行时调用或编译(我们使用r.js优化器)时没有任何加载 - 尽管编译完成没有抱怨。我已经检查过,双重检查,三重检查,现在请求在Stack Overflow上另一组眼睛。
使用RequireJS:2.1.4和r.js 2.1.4
以下是我的配置:
build-js.js(用于优化器)
var requirejs = require('requirejs');
var config = {
baseUrl: './public/js',
mainConfigFile: './public/js/config/config.js',
paths: {
'requireLib': 'library/require'
},
out: ".public/js/minified/main.js",
name: "minified/main",
wrap: false,
preserveLicenseComments: false,
deps: ["app/main","modules/movie","modules/theatre"]
};
requirejs.optimize(config);
config.js
// Set the require.js configuration for your application.
require.config({
paths: {
// JavaScript folders
libs: "library",
plugins: "plugin",
app: "app",
adminlibs: "../adminassets/js/plugins/ui",
// Libraries
jquery: "library/jquery",
jqcookie: "library/jquery.cookie",
jqui: "../adminassets/js/plugins/ui/jquery-ui-1.10.0.custom.min",
jqezmark: "library/jquery.ezmark",
jqcolor: "library/jquery.color",
underscore: "library/underscore-amdjs",
backbone: "library/backbone-amdjs",
chosen: "library/chosen.jquery",
moment: "library/moment",
// Site Components
site: "app/site",
sitediscussion: "app/site-discussion",
namespace: "app/namespace",
// Plugins
text: "plugin/text",
async: "plugin/async",
use: "plugin/use",
datetimepicker: "../adminassets/js/plugins/ui/jquery.datetimepicker",
ajaxfileupload: "../adminassets/js/plugins/uploader/jquery.ajaxfileupload"
},
shim: {
'chosen': ['jquery'],
'jqcookie': ['jquery'],
'jqui': ['jquery'],
'jqezmark': ['jquery'],
'jqcolor': ['jquery'],
'site': {
deps: ['jquery','jqezmark','chosen','underscore','namespace','jqui','jqcookie'],
exports: 'site'
},
'sitediscussion': {
deps: ['jquery', 'underscore'],
exports: 'sitediscussion'
},
'jquifull' : ['jquery'],
'datetimepicker' : ['jqui'],
'ajaxfileupload' : ['jquery'],
'backbone': ['underscore','jquery']
},
// Initialize the application with the main application file
deps: ["app/main"]
});
文件结构如下:
{站点根} /公共/ JS
其中包含目录:
应用 配置 图书馆 缩小的 模块 插入 模板
上面在build-js和config.js中列出的所有文件都被确认在预期的文件夹中。
requirejs的调用如下:
在开发机器上(我正在测试设置):
data-main =“/ js / config / config”src =“/ js / library / require.js”
关于生产(目前甚至没有创建缩小/主文件,但应该是) data-main =“/ js / minified / main”src =“/ js / library / require.js”
任何人都可以看到我可能做错了吗?同样,除了上面列出的两个文件(build-js.js和config.js)之外,没有对网站本身,javascript等进行任何更改。唯一的变化是文件已在目录结构中进行了物理移动。结果,我几乎肯定我在某个地方有一个路径问题,但我似乎无法找到它。帮助
答案 0 :(得分:1)
已找到解决方案。我通过“/ js / config / config”中requirejs include脚本标记中的data-main属性引用了我的配置文件。虽然我声明了/ public / js的基本路径,但是系统仍在尝试使用/ js / config /作为我的基本路径(如requirejs文档中所述,如果a,它将基于数据主要属性基于路径没有声明基本路径)。我将config.js文件移动到/ js并将data-main更改为/ js / config,现在所有路径都正常工作,引用base-path / js。
附注是由于我使用Zend Framework和错误处理,我没有注意到文件加载失败。没有404错误,我的开发工具的网络选项卡显示加载所有.js文件成功...只有当我查看这些文件的响应内容时,我发现他们正在吐出PHP错误日志而不是比.js内容。