web-dev-qa-db-ja.com

node.jsでの予期しない予約語のインポート

Node.jsバックエンドサーバーを実行しようとしています。 Node.jsファイルのインポート時にエラーunexpected reserved Wordを受け取りました。

ファイルcore.module.jsの行は次のとおりです。

'use strict';
import lodashMixins from './lodashMixins.js'
... other imports and configurations ...

簡単なコマンドを起動します:node core.module.js

珍しいエラーではありませんが、通常は他のライブラリで発生します。 Node.jsの解決策を見ていません。どうすれば修正できますか? Windows Serverを使用しています。

編集: ES6であることがわかりましたが、どのように起動できますか?アプリケーションのバックエンドのように見えますが、エラーなしで起動するためにどのコマンドを使用する必要があるのか​​わかりません。

52
Dracontis

importキーワードは、 ECMAScript 2015のモジュール機能 の一部であり、exportおよびその他のいくつかの仕様も含まれています。

現在、NodeJSでは、最新バージョン(v0.12.7)でさえネイティブに実装されておらず、ES2015の「より使いやすい」フォークiojsでもサポートされていません。

トランスパイラーを使用して動作させる必要があります。

[編集] --harmony_modulesフラグが存在するにもかかわらず、最新バージョン(v5.8)ではまだサポートされていません。これは 何もしない です。 here および here で説明したように、最良の実行はbabelを使用することです

33
Amit

importECMAScript 2015 (ES6) standardの一部であり、上記のAmitのように、現在Nodejsでネイティブに実装されていません。

babel のようなトランスパイラーを使用してes6スクリプトを実行できます

npm install babel

これに基づく例 answer

app.js

 import {helloworld,printName} from './es6'
 helloworld();
 printName("John");

es6.js

 module.exports = {
    helloworld: function() { console.log('hello world!'); },
    printName: function(name) { console.log(name); }
}

そして、start.jsrequire hookを使用して

require("babel/register");
var app = require("./app.js");

アプリを次のように起動します

node start.js

EDIT上記の答えはbabel v5.8.23に基づいていました。 babel >= v6の場合

start.jsrequire hookを使用

require('babel-core/register');
require("./app.js");

また、変換はデフォルトでは有効になっていません。したがって、presetをインストールする必要があります。この場合、 es2015 を使用します

npm install babel-preset-es2015

そして、ルートフォルダの.babelrcファイルで使用します

{
   "presets": ["es2015"]
}
50
Sami

Visual Studioの外部にこれらのツールを手動でインストールすると、この問題に遭遇しました。ただし、Visual Studioには、最新のWeb開発ワークフローで使用される複数のオープンソースコマンドラインツールが付属しています。手動でインストールしたものと同じバージョンを使用するようにVisual Studioに指示する方法は次のとおりです。

[ツール]-> [オプション]-> [プロジェクトとソリューション]-> [外部Webツール]に移動します。

  • 内部パスの前にグローバルPATH環境変数を設定します。右上の矢印を使用して順序を変更できます。

または

  • 最初に、すでに持っているNode.jsインストールを見つけて、コマンドラインで使用します。デフォルトでは、Node.js 0.12.7は「C:\ Program Files\nodejs」にインストールされます。 node.jsディレクトリへのパスに上部のこのエントリを追加して、代わりにVisual Studioがそのバージョンを使用するようにします
1
sree