#angular #google-chrome-extension
Вопрос:
В Windows 10 у меня есть эта досадная проблема, из-за которой Chrome не позволяет мне извлекать файлы карт, которые начинаются с обработчика протокола расширения chrome:
DevTools не удалось загрузить исходную карту: Не удалось загрузить содержимое для chrome-расширение://ophhkjncpgcjadncildcofemdojplgpp/main.js.карта: ошибка HTTP: код состояния 404, сеть::ERR_UNKNOWN_URL_SCHEME
Как я могу отладить свою веб-страницу расширения Chrome на основе Angular?
Протестировано с хромом 89 и 90. Использование Углового 11.
Использование https://github.com/larscom/ng-chrome-extension в качестве начального проекта.
Ответ №1:
Мне удалось встроить файлы карты в сгенерированные файлы javascript. Сам интерфейс командной строки Angular не предоставляет параметров конфигурации для обеспечения такого поведения. Я подал заявление ngx-build-plus
:
npm i -D ngx-build-plus
Примените схемы к вашему угловому проекту:
ng add ngx-build-plus
Добавьте файл плагина ngx-build-plus в свой проект, например, с именем build-customization-plugin.js
:
const { mergeWithCustomize, customizeObject } = require('webpack-merge');
const webpack = require("webpack");
exports.default = {
config: function (cfg) {
// first, we replace devtool in the webpack used by the angular cli to have the value 'inline-source-map'
const strategy = mergeWithCustomize({
customizeObject: customizeObject({
'devtool': 'replace'
})
});
const result = strategy(cfg, {
devtool: 'inline-source-map'
});
// then we find SourceMapDevToolPlugin and remove it
// This is because we should never use both the devtool option and plugin together.
// The devtool option adds the plugin internally so you would end up with the plugin applied twice.
// See https://webpack.js.org/configuration/devtool/
const index = result.plugins.findIndex((plugin) => {
return plugin instanceof webpack.SourceMapDevToolPlugin;
});
result.plugins.splice(index, 1);
return resu<
}
}
Запустите Angular cli с дополнительным --plugin
параметром:
ng build --plugin ~build-customization-plugin.js
Тильда (~) применяет ngx-build-plus для просмотра текущего каталога вместо разрешения модуля узла.
Записи Package.json:
- «ngx-сборка-плюс»: «^11.0.0»
- «@angular-devkit/сборка-угловой»: «~0.1102.11», который транзитивно устанавливает «webpack-слияние»: «5.7.3»
Примечание: Мое решение основано на примере, который использовался merge.strategy
. Это привело к ошибке во время выполнения merge.strategy is not a function
. Я предполагаю webpack-merge
, что изменил свой API при переходе с основной версии 4 на 5. 5.0.0 стал доступен примерно в августе 2020 года.