Экспортируемый пакет 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,

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

Другие вопросы по тегам