Как 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 кажется, что-то отличается от того, что мне было нужно, и не является частью моего решения.

Другие вопросы по тегам