Анализатор Babel не показывает правильное имя файла для ошибки синтаксиса - PullRequest
0 голосов
/ 01 мая 2020

Так что я пробовал везде, но не могу найти ответы на это. Я пытаюсь добавить некоторые пользовательские функции в процесс сборки Gatsby, который выполняется на node.js, что требует от меня получения содержимого файла и анализа в ast. Я успешно использую @babel/parser, однако всякий раз, когда синтаксический анализатор сталкивается с синтаксическими ошибками, он выдает ошибку, ссылающуюся на файл, запускающий синтаксический анализатор, а не на анализируемый файл (т. Е. Где фактически находится синтаксическая ошибка).

Здесь пример из gatsby-node.js, где я пытаюсь запустить функцию синтаксического анализа:

const contents = fs.readFileSync( file, 'utf-8' );

const ast = parser.parse( contents, {
  errorRecovery: true,
  plugins: [ 'jsx' ],
  sourceFilename: 'SHOWME.js',
  sourceType: 'module',
} );

Вот фактическая синтаксическая ошибка в анализируемом файле с именем Page.js:

import React from 'react';
import { useGroqQuery } = 'this should break';

А вот ошибка, отображаемая в терминале:

"gatsby-node.js" threw an error while running the createPages lifecycle:

Unexpected token (2:24)

  119 | 
  120 | const contents = fs.readFileSync( file, 'utf-8' );
> 121 | const ast = parser.parse( contents, {
      |                    ^
  122 |   errorRecovery: true,
  123 |   plugins: [ 'jsx' ],
  124 |   sourceFilename: 'SHOWME.js',

File: gatsby-node.js:121:20



  SyntaxError: Unexpected token (2:24)

  - index.js:742 Object._raise
    [gatsby-groq]/[@babel]/parser/lib/index.js:742:17

  - index.js:735 Object.raiseWithData
    [gatsby-groq]/[@babel]/parser/lib/index.js:735:17

  - index.js:729 Object.raise
    [gatsby-groq]/[@babel]/parser/lib/index.js:729:17


Как видите, она не отображает ни саму ошибку синтаксиса, ни имя файла, только номера строк и столбцов. Довольно расстраивает отладку. Я попытался использовать параметры синтаксического анализатора errorRecovery и sourceFilename, но здесь они ничего не изменили.

Кто-нибудь сталкивался с чем-либо подобным?

...