Как Babel Transpile Object.entries/ значения в приложении Aurelia CLI?
При использовании IE11 я получаю ошибки, как показано ниже, везде, где мой код использует Object.entries или Object.values:
Необработанное отклонение TypeError: Объект не поддерживает свойство или метод 'records'...
Я полагаю, что моя проблема связана с тем, что код не переносится в ES5, но я не знал, как проверить или изменить настройки моего проекта для переноса /Babel при использовании Aurelia CLI.
Если посмотреть дальше, я думаю, что Babel/ настройки, поставляемые с Aurelia, не поддерживают Object.entries/values (или другие предложенные опции ES2017), поэтому я установил babel-preset-es2017
а также babel-plugin-transform-runtime
в другом потоке - поддержка Babel для Object.entries
Однако я не смог выяснить, как обновить проект, чтобы включить их для переноса. Добавление в transform-runtime
в aurelia.json
или же .babelrc
файл ломает au run
и просто добавив es2017
к .babelrc
файл, похоже, ничего не делал. Я также смотрел на jsconfig.json
а также transpile.js
файлы, но не мог найти решение.
aurelia.json
файл:
...
"transpiler": {
"id": "babel",
"displayName": "Babel",
"fileExtension": ".js",
"options": {
"plugins": [
"transform-es2015-modules-amd",
"transform-runtime" <---tried
]
},
"source": "src/**/*.js"
},
...
.babelrc
файл:
{
"sourceMap": true,
"moduleIds": false,
"comments": false,
"compact": false,
"code": true,
"presets": ["es2015-loose", "stage-1", "es2017"], <---tried
"plugins": [
"syntax-flow",
"transform-decorators-legacy",
"transform-flow-strip-types",
"transform-runtime" <---tried
]
}
Добавление transform-runtime
в любом случае приводит к следующей ошибке:
Ошибка: ENOENT: такого файла или каталога нет, откройте "C:\Users...\src\babel-runtime\helpers\classCallCheck.js"
Не уверен, почему я получаю эту ошибку, или если это поможет, но мое предположение может быть из-за "source": src/**/*.js
в aurelia.json
Любая помощь будет принята с благодарностью. Спасибо!
1 ответ
Мое решение было установить следующий плагин, выполнив npm install babel-plugin-transform-es2017-object-entries --save-dev
, который переносит object.entries и object.values.
.babelrc
Файл тогда выглядел так:
{
"sourceMap": true,
"moduleIds": false,
"comments": false,
"compact": false,
"code": true,
"presets": ["es2015-loose", "stage-1"],
"plugins": [
"syntax-flow",
"transform-decorators-legacy",
"transform-flow-strip-types",
"transform-es2017-object-entries"
]
}
Кроме того, согласно Babeljs.io ( https://babeljs.io/docs/plugins/preset-es2017/), он выглядит babel-preset-es2017
не включает плагин / поддержку для object.entries/values. Кроме того, цель babel-tranform-runtime
кажется, что-то отличается от того, что мне было нужно, и не является частью моего решения.