Этот экспериментальный синтаксис требует включения подключаемого модуля синтаксического анализатора: 'optionalChaining' - PullRequest
0 голосов
/ 14 июля 2020

Я переношу проект Polymer на lit-element и отказываюсь от поддержки старых браузеров. В то же время я хочу начать использовать некоторые новые языковые функции JS, такие как опциональная цепочка, например

let street = contact.address?.street;

Для разработки я использую es-dev-server . Для сборки я все еще использую poly build , потому что мне нужно, чтобы описатели модуля импорта были заменены фактическими путями файловой системы, например,

import { LitElement } from "lit-element";

До сих пор эта цепочка инструментов работала хорошо, но теперь как Я использую необязательную цепочку в своем коде, сборка полимера отклоняет сборку с этим сообщением об ошибке:

Этот экспериментальный синтаксис требует включения плагина парсера: 'optionalChaining'

из-за кода, подобного приведенному выше. Я не могу найти информации о том, какой это парсер на самом деле, но я подумал, что это может быть Babel , потому что я нашел похожие сообщения об ошибках в контексте Babel в Интернете. Поэтому я добавил файл .babelr c со следующим содержимым:

{  
  "plugins": [
    "@babel/plugin-proposal-optional-chaining"
  ]
}

и мой пакет. json включает пакет как devDependency:

"devDependencies": {
   ...
   "@babel/plugin-proposal-optional-chaining": "^7.10.4"
   ...   
}

К сожалению, это нет эффекта. Сообщение об ошибке сохраняется, как если бы конфигурация Babel полностью игнорировалась. Я также пробовал ключ Babel в пакете. json, а также babel.config. json безуспешно.

Есть идеи, что нужно сделать для создания этой сборки?

Примечание: в соответствии с рекомендациями самой команды Polymer я хотел бы переключиться на инструменты open-w c. Как упоминалось выше, я уже использую es-dev-server для разработки, но open-w c рекомендует rollup для сборки. Но в настоящее время мне не нужны никакие комплектации, транспиляция или оптимизация. Все, что мне нужно, - это замена описателей голого модуля, чтобы мой код мог работать с другими серверами, такими как IIS или nginx.

Изменить: Я не нашел решения этой проблемы. Однако я хочу упомянуть, что я переключился на rollup , который работал достаточно хорошо, потому что rollup по умолчанию строит без минимизации и сохраняет динамически импортированные модули в отдельных файлах (что, конечно же, является всей целью Dynami c модулей). Он правильно заменяет описатели голого модуля, что было моей главной заботой. Это позволяет мне отлаживать свой код на других серверах (по крайней мере, большая его часть, некоторые части окрашены в красный цвет в Chrome и содержат только частичную отладочную / символьную информацию).

...