Экспортируемый пакет Aurelia вызывает 404 из SystemJS, если исходный модуль находился в подкаталоге
Я изучаю Aurelia с помощью каркасного навигационного приложения TypeScript / ASP.NET Core. Все работает нормально в состоянии по умолчанию. Чтобы протестировать экспортированный рабочий пакет, я запускаю задачу "Экспорт Gulp", затем публикую приложение через проект Visual Studio, опубликуйте его в локальной папке, затем замените опубликованную папку wwwroot на папку wwwroot из папки "export", затем используйте dotnet из командная строка для запуска приложения.
Вещи ломаются, если у меня есть какие-либо исходные модули в подкаталоге. Например, я переместил файлы компонентов welcome.ts / html в "/ src / Pages" и изменил его идентификатор модуля маршрута в app.ts в соответствии с "./pages/welcome". После этого приложение без пакетов все еще работает нормально, но когда я пробую экспортированную версию, я получаю запрос от SystemJS на http://localhost:5000/dist/pages/welcome.js, который 404s (как и следовало ожидать),
Я вижу содержимое компонента welcome в файле app-build.js, а файл config.js в папке экспорта содержит ожидаемые пути к файлам, то есть имеет "Pages/welcome...".
Я прочитал этот, казалось бы, похожий вопрос:
https://github.com/aurelia/bundler/issues/131
Но установка false для depCache не имеет значения в моем случае. Почему SystemJS пытается загрузить этот модуль отдельно от комплекта?
1 ответ
Я был в состоянии воспроизвести эту ошибку локально. Предполагая, что у вас есть среда Windows, это будет чувствительность к регистру.
После переименования [P]ages
папка для [p]ages
, в комплекте версия работает как положено.
На файловой системе есть [P]ages/welcome.js
модель представления, но [p]ages/welcome
был определен как moduleId.
- Режим Unbundled: файловая система Windows нечувствительна к регистру, поведение которой может вводить в заблуждение при загрузке
[P]ages/welcome.js
правильно. - Связанный режим:
- На основе пути к файлу встраивается процесс связывания
[P]ages/welcome.js
как[P]ages/welcome
модуль. - Но, согласно конфигурации маршрута, SystemJS будет искать
[p]ages/welcome
модуль внутриapp-build.js
,
- На основе пути к файлу встраивается процесс связывания
Я бы порекомендовал использовать строчные папки / имена файлов, когда это возможно.