2014-12-02 7 views
0

Я новичок в r.js оптимизации, но веер requirejsпеременные в пути требует не работают с r.js

отложений 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 в моем проекте корневой директории, я получаю следующее сообщение об ошибке:

Try only using a config that is also valid JSON, or do not use mainConfigFile and instead copy the config values needed into a build file or command line arguments given to the optimizer.

Source error from parsing: e:/mongrel_mpq/src/main/webapp/webresources/javascript/app.js: > ReferenceError: _JSHome is not defined

Дублированных, но без решения - Require.js optimizer and variables in paths

+0

Исправьте меня, если я ошибаюсь, но если '_JSHome' не объявлен, не попытался бы присвоить его в неопределенном чек-броске эту ошибку, поскольку переменная не была объявлена? – kingdamian42

+0

Если жалоба на действительный json, попробуйте удалить трейлинг-запятую после «name:« app »,« – vernak2539

ответ

1

Конфигурации вы имеете в app.js является конфигурацией вычислен. Например, вы устанавливаете значение _JSHome в значение, а затем используете его в конфигурации. Во время работы нет проблем с этим. Однако r.js не предназначен для выполнить, что вы переходите на mainConfigFile. Он выполняет поиск объекта JSON, который передается в require.config (или requirejs.config) и использует объект JSON. Как будто r.js должны были войти в ваш файл app.js и скопировать весь текст внутри require.config(...), а затем вставить его в свой собственный контекст выполнения. Когда он пытается использовать то, что он взял из вашего файла app.js, вы получаете ошибку, которая _JSHome не определена, потому что в контексте, где r.js интерпретирует вашу конфигурацию., _JSHome не определен.

Простым решением было бы иметь конфигурацию, которая не вычисляется. Однако, если вам нужно иметь вычисленную конфигурацию, то для получения r.js ее нужно вычислить до того, как ее увидит r.js. Это можно сделать как часть системы сборки (с Grunt, Gulp, make и т. Д.).

+0

, можете ли вы отправить такое решение? Я догадался, что это может быть проблемой, но не способ сказать «r.js» некоторых переменных. –