2017-11-24 4 views
2

私は長いことではなく、JavaScriptを学んでいます。私は以下のような2つのファイルを作成します。 app.js:node.js 9のエクスポートとインポートのエラーはなぜですか?

import * as Conf from './conf' 
console.log(Conf.a) 

conf.js:

export let a = 1 

と私はちょうどコンソールでコマンドを実行します。

node app.js 

それはERRました。エラーメッセージ:

(function (exports, require, module, __filename, __dirname) { import * 
as Conf from './conf' 

SyntaxError: Unexpected token import 

誰でも私にその理由を教えてもらえますか?そして、javascriptとbabelなどについては何ですか。私はその概念についてよく知らない。ありがとう。

答えて

1

importはESMキーワードです。実験的です。あなたが本当にそれを使用したい場合は、documentation on esm

nodejsを参照してください、あなたは利用バベルまたは--experimental-modulesフラグを使用してアプリケーションを実行し、ファイル.mjs拡張子名のいずれかのことができ

毎年、新しいJavaScriptの規範を促進することが礼譲があり
3

ことECMA 2016(ES6)、ECMA 2016(ES7)、ECMA 2017(ES8)...

各ノルムは、javascriptに必要な機能を記述しています。

これは市場における複数のJavaScriptエンジンが存在する:

  • V8モジラ
  • からMicrosoft
  • ライノからグーグル(ノード)
  • チャクラから

等を

これらのエンジンは標準に追いつこうとしますが、100%に準拠していません。

hereエンジンとES6の互換性に関する表が表示されます。

enter image description here


あなたが今想像することができます問題は、ある「なぜ私はすぐに新しいES8ブランドを使用したい場合は?」。 2つの答えがあります。node.jsが実装するのを待つか、ギロバイザBabelのいずれかを使用するか、

Babelは、あなたが行ったコードを、node.jsと完全に互換性のある古い標準(ES5)に置き換えます。

たとえば、importはES6の機能です。 Babelはimportrequireに変換して、node.jsが実行できるようにします。

トランスファーを使用すると非常に便利で強力なので、開発者チームの生産性を向上させる最後の機能をすぐに使用できます。


枚@Tuanアントランは、あなたがそれが(生産のためそれほどparticulary安全ではない)今実装の機能を表現する実験的な機能、だ実行するためにNode.jsのために言ってフラグを使用することができ、と述べました。


Hereは、ES6の機能に関する記事です。

Hereは、ES7の機能に関する記事です。

HereについてES8の機能について。

+0

のポイントに。私はちょうどあなたに1つの質問をしたい。 'babel'を使うときは' devDependencies'に入れます。どのようにバベルはprod envでes6をtranspilする。何か不足していますか? –

+0

コードを作成します。あなたはそれを蒸散する。あなたはそれを実行する。 [Here](http://ccoenraets.github.io/es6-tutorial/setup-babel/)は、babel環境を設定する方法に関するチュートリアルです。私はあなたのプロジェクトをセットアップする方法についての研究をしているときにキーワードGrunt + Babelを探すことをお勧めします:) –

0

すでに他の回答が指摘されているので、キーワードimportexportは実験的です。

あなたapp.js

let conf = require("./conf"); 
console.log(conf.a); 

あなたconf.js

let a = 1; 
exports.a = a; 

node app.jsが、その後に1を出力します私はrequire()を使用してお勧めする理由です
コンソール。

0

NodeJSでES6のインポート/エクスポートを使用するには、Babelまたは別のトランスバータをインストールする必要があります。

バベルのインストール、あなたはここで見つけることができます:https://babeljs.io/docs/setup/#installation

また、あなたはNodeJSモジュールローディングシステムを使用することができます。
ドキュメント:あなたのケースではhttps://nodejs.org/api/modules.html


app.js

var conf = require('./conf'); 
console.log(conf); 

conf.js

let a = 1; 
module.exports = a; 

それとも

app.js

var conf = require('./conf'); 
console.log(conf.a); 

conf.js

let a = 1; 
exports.a = a; 
関連する問題