Использовать «import» с библиотекой Node, а не «require»?

1

Вопрос для новичков здесь.

Я пытаюсь использовать клиент Google Cloud Node с существующим приложением (не написанным мной), которое связывает его код с rollup.

Я попытался импортировать библиотеку с требованием, согласно ее документации, следующим образом:

 import REGL from "regl/dist/regl";
 import Camera from "./lib/camera";
 ...
 var gcloud = require('google-cloud');

Но мое приложение жалуется (CLARIFICATION: он только начинает производить эту ошибку, когда я добавляю инструкцию require, в противном случае импорт работает нормально):

'import' and 'export' may only appear at the top level

Поэтому, возможно, мне нужно использовать import gcloud вместо require, но как? Я попытался взглянуть на код в node_modules и сделать это вместо этого:

import gcloud from "google-cloud/src/index";

Но теперь я получаю кучу других ошибок

   Unexpected token
node_modules/google-cloud/node_modules/ent/reversed.json (2:7)
1: {
2:     "9": "Tab;",
      ^

Как я могу использовать import вместо require, или же, как я могу сделать require дружат с import?

  • 0
    все ли в порядке с кодом перед добавлением в var gcloud = require('google-cloud') ?
  • 0
    @ Надеюсь, да, это просто добавление требования, которое вызывает проблему.
Показать ещё 1 комментарий
Теги:

1 ответ

4
Лучший ответ

Импорт - это синтаксис ES6. Вы либо должны использовать экспериментальный флаг с nodejs, либо использовать babel для компиляции js для совместимости с ES6.

EDIT: поскольку проблема связана с требованием, а не импортом, я обновляю свой ответ.

Я не уверен, что вы настроили, но это потому, что, я предполагаю, google-облако не написано в es6. Таким образом, вам нужно будет увидеть, есть ли версия es6 в src. Если вы можете попробовать (я сомневаюсь, что это сработает)

Пытаться:

import * as gcloud from 'google-cloud' 

если это не сработает - попробуйте модуль обрезки, такой как клепаный. Вам понадобится webpack, чтобы скомпилировать это. Поскольку вы используете rollup.js, с которым я не знаком, вам понадобится компилятор es5 для es6.

  • 0
    Хорошо - существующий imports работает нормально, это require которое вызывает проблему. Что именно мне нужно сделать с библиотекой gcloud чтобы сделать ее совместимой с ES6?
  • 0
    Я не уверен, что вы настраиваете, но это потому, что, я думаю, Google Cloud не написано в ES6. Так что в этом модуле нет экспортных модулей. Попробуйте: импортировать * как gcloud из "Google-облака". если это не сработает - попробуйте шиммирующий модуль, как приковано. Вам понадобится веб-пакет для компиляции.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню