使用" import"使用节点库,而不是"需要"?

时间:2017-09-12 16:24:38

标签: javascript node.js

新手节点问题在这里。

我试图将Google Cloud Node client与现有的应用程序(不是由我编写)一起使用,将其代码与汇总捆绑在一起。

我已按照以下文档尝试使用require导入库:

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

但我的应用程序抱怨(澄清:它只在我添加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,或者我如何才能使requireimport完美匹配?

1 个答案:

答案 0 :(得分:4)

import是ES6语法。您必须使用带有nodejs的实验标志或使用babel将您的js编译为ES6兼容。

编辑: 由于问题是需要而不是导入,我更新了我的答案。

我不确定你的设置是什么,但是因为,我猜测,google-cloud不是用es6编写的。因此,您必须查看src中是否有es6版本。如果有你可以尝试(我怀疑这会起作用)

尝试:

import * as gcloud from 'google-cloud' 

如果这不起作用 - 尝试像铆接一样的匀场模块。你需要webpack来编译它。由于您使用的是rollup.js,我不熟悉您,因此需要es5到es6编译器。