2017-09-12 9 views
1

初心者の質問はこちら。"require"ではなく "import"をノードライブラリで使用しますか?

私はGoogle Cloud Node clientをロールアップでコードをバンドルする既存のアプリケーション(自分で書かれていない)で使用しようとしています。

私は次のように、そのマニュアルに従って、必要とライブラリをインポートしようとしました:

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が、どのように使用する必要がありますか?どのように、することができます

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、または代わりに使用することができ、他のエラーの束を得る:私はnode_modulesのコードを見て、代わりにこれをやってみましたimportrequireをうまく再生できますか?

+0

あなたは 'var gcloud = require( 'google-cloud')'を追加する前に、すべてのコードをうまくやっていますか? – Tope

+0

@Topeはい、問題を引き起こすrequireを追加するだけです。 – Richard

+0

'import'をサポートするためにプロジェクトの環境を設定する方法を説明していないときは、これに対する答えを期待するのは難しいです。 babel、webpack、browserify、またはnode.jsハーモニー機能を使用していますか?ああ、あなたがロールアップを使用しているのを見ただけです。 –

答えて

4

インポートはES6構文です。 nodejsで実験的フラグを使用するか、jsをES6互換にコンパイルするためにbabelを使用する必要があります。

EDIT: 問題は必須でインポートではないので、私は自分の答えを更新しています。

私はあなたがセットアップされているかどうかはわかりませんが、それは私が推測しているので、google-cloudはes6で書かれていないからです。したがって、srcにes6バージョンがあるかどうかを確認する必要があります。あなたがあれば(私はこれが動作しないだろう)

試してみてください:問題が解決しない場合は

import * as gcloud from 'google-cloud' 

を - リベットのようなシムのモジュールを試してみてください。これをコンパイルするにはwebpackが必要です。あなたはあなたに慣れていないrollup.jsを使っているので、これにはes5からes6のコンパイラが必要です。

+0

OK - 既存の 'imports'は正常に動作しています。問題を引き起こしているのは' require'です。 'gcloud'ライブラリにES6互換にするためには、正確に何をする必要がありますか? – Richard

+0

私はあなたがセットアップされているかどうかはわかりませんが、それは私が推測しているので、google-cloudはes6で書かれていないからです。そのモジュールにexport.modulesはありません。試してみてください:google-cloudからgcloudとして*をインポートしてください。それが動作しない場合 - リベットのようなシミングモジュールを試してください。これをコンパイルするにはwebpackが必要です。 – Garuuk

+0

@Garuuk彼はロールアップを使用していますが、ウェブパックは使用していません。 –

関連する問題