Неожиданный токен Babel ‘:’ во время предложения let

#javascript #node.js #ecmascript-6 #babeljs

#javascript #node.js #ecmascript-6 #babeljs

Вопрос:

У меня есть следующий сегмент кода:

   let baseUrl = '/';
  let url = req.originalUrl || '/';

  let config: ExpressEngineConfig = {
    directives: [ App ],
  

когда я пытаюсь скомпилировать этот файл с помощью babel, я получаю сообщение об ошибке

 SyntaxError: server.js: Unexpected token, expected ; (37:12)
  

Ошибка указывает на : символ в качестве неожиданного токена. Я что-то упускаю? Вот мой .babelrc . Спасибо за любую помощь

 {
    "presets": ["es2015"]
}
  

Ответ №1:

У вас есть аннотация типа в let config: ExpressEngineConfig , которая не является частью JS (es2015 или иным образом).

Если вы используете аннотации типа Flow, вам необходимо включить плагин, как описано в документах Babel:

 {
  "plugins": ["syntax-flow"]
}
  

Если вы используете Typescript, вам нужно будет скомпилировать его в JS перед запуском Babel.

Комментарии:

1. Код очень похож на код, представленный здесь ; Интересно, не является ли аннотация результатом слишком большого вырезания и вставки из исходного TS-источника (учитывая, что предполагается, что она должна выполняться Node напрямую).

2. @robertklep да, это то место, откуда я его получил. Просто пытаюсь привести это в какую-то форму, которую я действительно могу запустить

3. @SyntacticFructose просто удалите аннотацию, и все будет хорошо. Или включите Flow и позвольте it / Babel удалить их (я не уверен, кто это делает).

4. @SyntacticFructose это, вероятно, сработает, если вы удалите : ExpressEngineConfig (так оно и становится let config = { ... } ).