r.js оценивает плагин «текст», несмотря на параметр «stubModules»

какой-то код сначала:

Мой загрузочный файл r.js, который я запускаю r.js.cmd -o static/js/boot.js

({
    baseUrl: './',
    preserveLicenseComments: false,
    name: 'boot',
    stubModules: ['text'],
    mainConfigFile: './requirejs/config.js',
    out: 'build.min.js',
    //paths: {
    //    'text': 'plugins/requirejs.text'
    //},
})

затем плагин выдает исключение в консоли:

Error: Error: Loader plugin did not call the load callback in the build:
text:
    text!langJSON: Error: ENOENT, no such file or directory 'C:\web\lang\main'
    text!/web/downloads/links.json: Error: ENOENT, no such file or directory 'C:\web\downloads\links.json'

Может ли кто-нибудь ответить мне, почему r.js оценивает «текстовый» плагин, несмотря на параметр «stubModules» в свойствах профиля сборки?

Я читал эти статьи раньше:

  1. Как можно Я запрещаю оптимизатору Require.js включать текстовый плагин в оптимизированные файлы?
  2. Встраивание текста require.js! с помощью Grunt

Заранее спасибо.


person Andrei Zhamoida    schedule 05.05.2016    source источник


Ответы (1)


stubModules не указывает оптимизатору пропускать все, что загружается через плагин text. Он просто говорит оптимизатору заменить плагин этим кодом в финальном пакете:

define('text',{load: function(id){throw new Error("Dynamic load not allowed: " + id);}});

Это полезно, если вы создаете пакет, который будет содержать каждый модуль, необходимый вашему коду. Если это так, то все модули, загруженные через text, будут уже находиться в бандле, и, таким образом, включение кода плагина text в бандл бессмысленно, поскольку он не будет использоваться. (В этом случае подключаемый модуль используется во время сборки, но не во время выполнения.)

Ошибки, которые вы получаете, связаны с тем, что оптимизатор все еще пытается включить в ваш пакет модули, загруженные через text, но не находит файлы.

Если вы хотите исключить из пакета все, что загружается через text, вы можете добавить paths в конфигурацию сборки, в которой эти модули перечислены как empty:. Например:

paths: {
    'web/downloads/links.json': 'empty:',
    ...
}

но тогда вам понадобится плагин text во время выполнения для загрузки текста, поэтому вам следует удалить файл stubModules.

person Louis    schedule 05.05.2016