Javascript require路径中的变量不适用于r.js
我不熟悉Javascript require路径中的变量不适用于r.js,javascript,node.js,requirejs,r.js,requirejs-optimizer,Javascript,Node.js,Requirejs,R.js,Requirejs Optimizer,我不熟悉r.js优化,但我是requirejs build config.js ({ appDir: "./src/main/webapp/webresources/javascript/", baseUrl: "./", dir: "./target/webresources/js", optimizeCss: "none", mainConfigFile: &qu
r.js
优化,但我是requirejs
build config.js
({
appDir: "./src/main/webapp/webresources/javascript/",
baseUrl: "./",
dir: "./target/webresources/js",
optimizeCss: "none",
mainConfigFile: "./src/main/webapp/webresources/javascrip/app.js",
inlineText: true,
removeCombined: true,
modules: [
{
name: "app",
}
]
})
app.js看起来像
if (typeof _JSHome=== "undefined") {
_JSHome = "/webresources/javascript/edulastic";
}
if (typeof EditorValue === "undefined") {
EditorValue = "";
}
require.config({
baseUrl: '/webresources/javascript',
waitSeconds: 180,
paths: {
tpl : _JSHome+'/js/tpl',
underscore : 'underscore-min',
backbone : 'backbone-min',
text : 'text/text',
jquery : 'jquery',
jqueryuitouchpunch : "jquery.ui.touch-punch",
modernizr : 'modernizr',
hammer : 'hammer.min',
detectizr : 'detectizr',
bootstrap : _edulasticJSHome+'/bootstrap/js/bootstrap.min',
fastClick : "mobileutils/fastclick/fastclick.min",
asMetaData : _JSHome+'/js/app/metaData',
highCharts : '/webresources/javascript/highcharts/highcharts-min',
},
});
当我跑的时候
r.js-o build config.js
在我的项目根目录中,我得到以下错误:
请尝试仅使用同样有效的JSON配置,或者不要使用mainConfigFile,而是将所需的配置值复制到生成文件或提供给优化器的命令行参数中
解析的源错误:e:/mongrel\u mpq/src/main/webapp/webresources/javascript/app.js:>ReferenceError:\u JSHome未定义
重复但没有解决方案-您在
app.js
中的配置是计算配置。例如,您将\u JSHome
设置为一个值,然后在配置中使用它。在运行时,这没有问题。但是,r.js
不是为执行传递给maincigfile
的内容而设计的。它所做的是查找传递给require.config
(或requirejs.config
)并使用JSON对象的JSON对象。这就好像r.js
要进入你的app.js
文件,复制require.config(…)
中的所有文本,然后将其粘贴到自己的执行上下文中。当它试图使用从app.js
文件捕获的内容时,您会得到一个错误,即未定义\u JSHome
,因为在r.js
解释配置的上下文中,\u JSHome
未定义
简单的解决方案是拥有一个未经计算的配置。但是,如果您需要一个计算配置,那么要获得
r.js
来使用它,需要在r.js
看到它之前计算它。这可以作为构建系统的一部分来完成(使用Grunt、Gulp、make
,等等)。如果我错了,请纠正我,但是如果没有声明\u JSHome
,那么在未定义的检查中尝试分配它不会抛出该错误,因为变量尚未声明?如果它抱怨有效的json,请尝试删除后面的逗号“name:“app”,“你能发布这样一个解决方案吗?我猜这可能就是问题所在,但不要想办法告诉r.js
一些变量。