SyntaxError: Невозможно использовать оператор импорта вне модуля - PullRequest
4 голосов
/ 15 октября 2019

У меня есть проект ApolloServer, который доставляет мне проблемы, поэтому я подумал, что могу обновить его и столкнулся с проблемами при использовании последней версии Babel. Мой "index.js":

require('dotenv').config()
import {startServer} from './server'
startServer()

И когда я запускаю его, я получаю сообщение об ошибке "SyntaxError: Невозможно использовать оператор импорта вне модуля". Сначала я попытался сделать что-то, чтобы убедить TPTB *, что это был модуль (но безуспешно). Поэтому я изменил «import» на «require», и это сработало.

Но теперь у меня есть около двух десятков «import» в других файлах, выдающих мне ту же ошибку.

* I 'Я уверен, что корень моей проблемы в том, что я даже не уверен, что жалуется на проблему. Я вроде бы предположил, что это был Babel 7 (так как я пришел из Babel 6, и мне пришлось изменить предварительные настройки), но я не уверен на 100%.

Большинство из того, что я нашел для решений, нене похоже на прямой узел. Например, здесь:

Модуль ES6 при импорте выдаёт «Uncaught SyntaxError: Неожиданный идентификатор»

Говорит, что это было решено добавлением «type = module», но это обычно происходитв HTML, которого у меня нет ни одного. Я также попытался использовать старые пресеты моего проекта:

"presets": ["es2015", "stage-2"],
"plugins": []

Но это вызывает у меня еще одну ошибку: «Ошибка: файлам плагинов / пресетов не разрешено экспортировать объекты, только функции».

ОБНОВЛЕНИЕ: Вот зависимости, с которых я начал:

"dependencies": {
"@babel/polyfill": "^7.6.0",
"apollo-link-error": "^1.1.12",
"apollo-link-http": "^1.5.16",
"apollo-server": "^2.9.6",
"babel-preset-es2015": "^6.24.1",

1 Ответ

0 голосов
/ 11 ноября 2019

Я столкнулся с проблемой, когда я изменил const {app, BrowserWindow} = require('electron') на import { app, BrowserWindow } from 'electron' по предложению VSCode. Это начало давать мне ошибку после этого.

Когда я изменил его обратно на оригинальный, он начал работать нормально. Извините, я не знаю, почему это работает.

...