Как преобразовать модуль после запуска обычного преобразования
Тестирование компонентов React с шуткой. Некоторые из этих компонентов используют OpenLayers (ol пакет v5.2.0). В пакете ol v4 я применил transformIgnorePatterns для трансформации пакета ol:
"jest": {
"transformIgnorePatterns": [
"node_modules/(?!(ol)/)"
],
(...)
}
Теперь я получаю следующую ошибку при запуске NODE_ENV=test jest
:
(...)
(...)/node_modules/ol/index.js:5
export {default as AssertionError} from './AssertionError.js';
^^^^^^
SyntaxError: Unexpected token export
14 | let map = new Map({
15 | layers: options.layers,
> 16 | target: 'map',
| ^
17 | view: options.view,
18 | controls: options.controls
19 | });
Я применил следующие пресеты и плагины в.babelrc:
"presets": [
["@babel/preset-env", {
"modules": false
}
],
"@babel/preset-react"
],
"plugins": [
"lodash",
["@babel/plugin-transform-runtime", {
"corejs": 2,
"helpers": true,
"regenerator": true,
"useESModules": false
}
],
"@babel/plugin-transform-modules-commonjs",
"@babel/transform-arrow-functions",
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-syntax-import-meta",
["@babel/plugin-proposal-class-properties", {"loose": false}],
"@babel/plugin-proposal-json-strings"],
"env": {
"production": {},
"development": {},
"test": {
"presets": [
["@babel/preset-env"],
"@babel/preset-react"
]
}
}
Аналогичная проблема решается при создании приложения путем применения опции global-transform ( https://github.com/browserify/browserify) cf. эта тема выпуска: https://github.com/openlayers/openlayers/issues/8497.
$ browserify -g [ babelify --presets [ \"@babel/preset-env\" ] --ignore [ \"//node_modules/(?!ol/)/\" ] ] ./src/index.js -o ./public/js/bundle.js
Я хочу применить подобное преобразование к модулю ol, но не знаю, как к нему подойти. TransformIgnorePatterns, используемый для решения этой проблемы, ср. https://github.com/facebook/jest/issues/2550
1 ответ
Ошибка больше не возникает, если я помещаю содержимое .babelrc в файл babel.config.js в корне проекта.
module.exports = {
(...)
};
ср
побочный эффект - TypeError: $export is not a function
при загрузке пакета, созданного с помощью browserify/babelify, но я думаю, что это проблема конфигурации.
Изменить: Побочный эффект был решен для меня, изменив параметры для плагина "@babel/plugin-transform-runtime" на:
{
"corejs": false,
"helpers": false,
"regenerator": true,
"useESModules": false
}
ср /questions/10105863/babel-6-transform-runtime-export-ne-yavlyaetsya-funktsiej/10105893#10105893 и установка @ babel / runtime cf. https://babeljs.io/docs/en/babel-plugin-transform-runtime