Как настроить веб-пакет для поддержки виртуальных путей на некоторых хостах? - PullRequest
0 голосов
/ 08 мая 2019

Я создаю приложение с использованием ASP.NET Core для бэкэнда и запускаю приложение React для клиентской части.Я настроил веб-пакет для преобразования SASS в CSS, TypeScript в JavaScript и использую HtmlWebpackPlugin для добавления этих пакетов в файл _Layout.cshtml.Пакеты публикуются на wwwroot/dist/

Все это прекрасно работает с моим локальным хостингом разработки.Проблема возникает, когда я пытаюсь запустить приложение в виртуальном каталоге (требование некоторых моих развертываний).ASP.NET разрешает виртуальные пути к полным путям на основе информации о хостинге (например, ~\resource разрешается в \virtual-directory\resource), но ресурсы веб-пакета компилируются по фиксированным путям.

Я пытался установить *Свойство 1010 * для генерации виртуальных путей:

output: {
    path: path.resolve(__dirname, 'wwwroot/dist'),
    publicPath: '~/dist/'
}

Хотя это прекрасно работает для пакетов, на которые ссылается мой файл _Layout.cshtml, вставляя значения href с префиксом идентификатора виртуального пути, который разрешает ASP.NET,он не работает, когда любой из пакетов ссылается на другие файлы, такие как изображения.Эти ссылки не разрешаются ASP.NET, и браузер пытается загрузить ресурс по адресу https://host/~/dist/images/cat.png.

. Я хотел бы, чтобы все ресурсы разрешались относительно корня приложения, а некорень хоста.

1 Ответ

1 голос
/ 08 мая 2019

Конструкция пути ~/ не является стандартной.Razor понимает, что означает «относительно корня документа», и заменяет его подходящим путём к хосту.Однако если то, что вы делаете, не обрабатывается Razor, то вы не можете его использовать.

Лучшее, что вы можете сделать, - это относительные пути (path/to/file, т.е. без предшествующих /)или относительные к хосту пути (/path/to/file, т.е. с предшествующим /).В первом случае путь будет интерпретироваться из пути к файлу в контексте.Например, если путь находится в файле JS, то он будет относительно того места, где находится этот файл JS.В последнем случае это будет относительно хоста, то есть полного пути от хоста, включая любые виртуальные каталоги.

Вам больше не с чем работать, потому что в корне приложения нет понятияутилита файловой системы, такая как webpack.Эта концепция существует только в контексте работающего приложения.

...