Так что я использую модуль, который запрашивает контент на основе его типа, и чтобы выяснить, какой контент он ищет, он должен сначала построить строку запроса, используя различные функции, такие как Not, And, type, typeIs и т. Д. из этих функций вызывает у меня проблемы в производстве; В основном функция typeIs. Вот как это реализовано.
public typeIs<TNewType>(newTypeAssertion: new (...args: any[]) => TNewType) {
this.stringValue = `TypeIs:${newTypeAssertion.name}` // Here is the issue
this.segmentType = 'typeIs'
return this.finialize<TNewType>()
}
Теперь проблема в том, что когда код минимизируется, по умолчанию все имена функций сжимаются, искажаются и т. Д. Чтобы решить эту проблему, я установил минимизатор для сохранения имен функций. Вот как это выглядит.
minimizer: [
new TerserPlugin({
cache: true,
parallel: true,
terserOptions: {
keep_fnames: true
}
})
]
Это прекрасно работает в Chrome, но проблема в том, что это не работает в краю.
Вот скриншот, чтобы показать, что я имею в виду.
![Edge browser unable to identify function name](https://i.stack.imgur.com/MjuLE.png)
Вы можете видеть, что я выделил слово Typeis:
на изображении, и причина этого в том, что это часть строки запроса, которая искажена. Это должен был быть Typeis: User для правильной работы.
Как я решил эту проблему, настроив минимизатор так:
minimizer: [
new TerserPlugin({
cache: true,
parallel: true,
terserOptions: {
keep_fnames: true,
compress: false // This setting is crucial for it work on edge.
}
})
]
и вот как это выглядит на Edge.
![enter image description here](https://i.stack.imgur.com/Cx69s.png)
Как видите, теперь строка запроса больше не искажена, поскольку не было сжатия. Очевидно, что я хочу, чтобы мой код был сжат, чтобы уменьшить размер пакета, и прошел через многие из его параметров сжатия, чтобы выяснить, какой вариант является виновником, но безрезультатно.
Мой вопрос: почему свойство name ничего не выводит в браузере Edge при сжатии, а не в chrome?