Экспортированный пакет Aurelia вызывает 404 из SystemJS, если исходный модуль находился в подкаталоге.

Я изучаю Aurelia через навигационное приложение TypeScript/ASP.NET Core. Все работает нормально в состоянии по умолчанию. Чтобы протестировать экспортированный производственный пакет, я запускаю задачу Gulp Export, затем публикую приложение через публикацию проекта Visual Studio в локальную папку, затем заменяю опубликованную папку wwwroot папкой wwwroot из папки «экспорт», затем использую dotnet из командная строка для запуска приложения.

Все ломается, если у меня есть какие-либо исходные модули в подкаталоге. Например, я переместил файлы компонентов welcome.ts/html в «/src/Pages» и изменил его модуль маршрута в app.ts соответственно на «./pages/welcome». Затем отдельное приложение по-прежнему работает нормально, но когда я пробую экспортированную версию, я получаю запрос от SystemJS к http://localhost:5000/dist/pages/welcome.js, что означает ошибку 404 (как и следовало ожидать).

Я вижу содержимое приветственного компонента в файле app-build.js, а файл config.js в папке экспорта содержит ожидаемые пути к файлам, т. е. содержит «Pages/welcome...».

Я читал этот, казалось бы, похожий вопрос:

https://github.com/aurelia/bundler/issues/131

Но установка для depCache значения false в моем случае ничего не изменила. Почему SystemJS пытается загрузить этот модуль отдельно от пакета?


person Tom W Hall    schedule 21.08.2016    source источник


Ответы (1)


Я смог воспроизвести эту ошибку локально. Если предположить, что у вас среда Windows, это будет проблема с учетом регистра.

После переименования папки [P]ages в [p]ages версия в комплекте работает как положено.

В файловой системе есть модель представления [P]ages/welcome.js, но [p]ages/welcome определено как moduleId.

  • Несвязанный режим: файловая система Windows нечувствительна к регистру, что может ввести в заблуждение при правильной загрузке [P]ages/welcome.js.
  • Bundled mode:
    • Based on file path, bundling process embeds[P]ages/welcome.js as [P]ages/welcome module.
    • Но, согласно конфигурации маршрута, SystemJS будет искать [p]ages/welcome модуль в app-build.js.

Я бы порекомендовал использовать имена папок/файлов в нижнем регистре, когда это возможно.

person Marton Sagi    schedule 29.08.2016
comment
Да! Невероятный! Aurelia — замечательный фреймворк, но его сборка и комплектация кажутся слишком сложными. Большая часть моего ограниченного времени была потрачена на борьбу с JSPM, а не на изучение Aurelia :-( - person Tom W Hall; 30.08.2016