Проблема:

После разработки 4 компонентов LWC и последующего развертывания в рабочей организации через SFDX: Push Source to Default Scratch Org интерфейс командной строки Salesforce возвращает:

LWC1001: Unexpected compilation error: did not find a shallow_cmp function for AST_Chain

Некоторые детали:

  • Все 4 LWC не выдают ошибок при развертывании на локальном сервере разработки.
  • 1 LWC — сервисный компонент
  • 2 компонента LWC являются дочерними компонентами
  • Запуск sfdx-cli/7.98.0
  • На каждом LWC работает API версии 51.0.
  • Все видны для каждого, кроме сервисного LWC
  • Для каждого заявлены все мишени, кроме служебного LWC

Что я пробовал:

  • Перенос LWC в новый проект и их развертывание.
  • Развертывание каждого LWC по отдельности.
  • Обновление sfdx

Результат:

  • Развертывание из нового проекта и обновление sfdx по-прежнему возвращает ту же ошибку.
  • Но после развертывания каждого LWC по отдельности я обнаружил, что два из них не могут развертываться сами по себе. Один из них, назовем его c-bar, не может быть развернут, поскольку он ссылается на c-foo в своей разметке. Однако при развертывании только c-foo интерфейс командной строки возвращает ту же ошибку — LWC1001: Unexpected compilation error: did not find a shallow_cmp function for AST_Chain — и VS Code указывает на свой файл foo.js-meta.xml. Поэтому, предположительно, причиной является c-foo, поэтому я прокомментировал файлы foo.html и foo.js, а также ссылку на c-foo в разметке bar.html, а затем повторно развернут c-foo. В результате его удалось успешно развернуть.
  • Если комментировать только файл разметки (foo.html), оставив только <template></template>, интерфейс командной строки возвращает ту же ошибку компиляции, из-за которой я думаю, что foo.js является причиной по какой-то причине.

Любые мысли или предложения, почему ошибка компиляции может возникнуть из foo.js, когда все, что он в основном делает, это прослушивание и отправка событий?

3
celsius 25 Апр 2021 в 12:38
Вероятно, что-то в вашем .js плохо обрабатывается инструментами. Предложите вам опубликовать .js, если это возможно, и кто-то может распознать в нем какой-то необычный код, чтобы вы могли обойти проблему с инструментами, изменив свой .js. PS хорошая работа по сужению этого.
 – 
Keith C
25 Апр 2021 в 14:43
Да, оказывается, один из инструментов компиляции SFDX дает сбой при обнаружении необязательной цепочки ES2020 или синтаксиса нулевого объединения. После рефакторинга кода с использованием этих операторов он работает. Спасибо
 – 
celsius
26 Апр 2021 в 02:46

1 ответ

... оказывается, что один из инструментов компиляции SFDX вылетает из строя при обнаружении необязательной цепочки ES2020 или синтаксиса нулевого объединения. После рефакторинга кода с использованием этих операторов он работает...

Использование необязательных бросков цепочки:

LWC1001: Unexpected compilation error: did not find a shallow_cmp function for AST_Chain

При использовании нулевых объединенных бросков:

LWC1503: Parsing error: Unexpected token, expected ";"

4
celsius 26 Апр 2021 в 03:00