2017-05-27 19 views
1

こんにちは、私はNode.js(express.js)フレームワークを扱うためにWebStorm最新バージョンを使用しています。私はES6の構文を使用できるように、私はバベルが、それはindex.js.mapが含まれているindex.jsを生成し、[OK]作業(たとえばWebStormでWebStorm Node.jsプロジェクトでES6を使用するようにbabelを設定してください

import express from "express". 

を私babelを設定している。

をプロジェクトを実行しているときに問題があります私はまだエラーが出る

/usr/local/Cellar/node/7.10.0/bin/node /Volumes/Elements/Learning/Node/Project/NodeWebStorm/bin/www 
/Volumes/Elements/Learning/Node/Project/NodeWebStorm/routes/index.js:1 
(function (exports, require, module, __filename, __dirname) { import express from "express" 
                   ^^^^^^ 
SyntaxError: Unexpected token import 
    at createScript (vm.js:53:10) 
    at Object.runInThisContext (vm.js:95:10) 
    at Module._compile (module.js:543:28) 
    at Object.Module._extensions..js (module.js:580:10) 
    at Module.load (module.js:488:32) 
    at tryModuleLoad (module.js:447:12) 
    at Function.Module._load (module.js:439:3) 
    at Module.require (module.js:498:17) 
    at require (internal/module.js:20:19) 
    at Object.<anonymous> (/Volumes/Elements/Learning/Node/Project/NodeWebStorm/app.js:8:13) 

Process finished with exit code 1 

Hererは ここenter image description here

は私のindex.jsたバベルgである私のプロジェクトであります繰り返します。 [OK]を見て、私もNode.jsのがwebstormからテンプレートを表現するためのテンプレートがあるエラーなし

'use strict'; 

var _express = require('express'); 

var _express2 = _interopRequireDefault(_express); 

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 

// let express = require("express"); 
var router = _express2.default.Router(); 

/* GET home page. */ 
router.get('/', function (req, res, next) { 
    // res.render('index', { title: 'Express' }); 
    res.render('newindex', { title: 'Hey', message: 'Hello there!' }); 
}); 

router.get('/about', function (req, res) { 
    res.send('what the hell'); 
}); 

router.get('/new', function (req, res) { 
    res.json({ "test": "new value" }); 
}); 

router.get('/new/path', function (req, res) { 
    res.send("what the new"); 
}); 

router.get('/newpath', function (req, res) { 
    res.send('this is new path'); 
}); 

router.get('/testpath', function (req, res) { 
    res.send('what the hell'); 
}); 

module.exports = router; 
//# sourceMappingURL=index.js.map 

単独でそれを実行しようとしました。誰もがそれを修正する方法を知っています。追加のステップを追加する必要がありますか?フレームワーク - - 私も言語を変更しているおかげで

は編集ES6にはJavaScriptをまだ enter image description here

私のconfigureを更新

enter image description here

enter image description here

+0

私はちょうどWS設定でECMA 2015 ECMA 5からJavaスクリプト言語を変更するとエラーが逃げました。 – Jankapunkt

+0

こんにちは、私はすでにECMA2015に変更しましたが、まだエラーです。私はexppress.jsからnode.jsテンプレートを実行しています –

+0

誰もが理想を持っています –

答えて

6

物事を明確にするために、エラー:あなたWebStormとはまったく関係がありません。エラーは、コードを実行するNode.jsインタプリタから来ます。 Node.jsはまだES6モジュールをネイティブにサポートしていません(実際にはJavaScriptランタイムではサポートされていません - ECMAScriptではモジュールがランタイムにどのように挿入されるかを決定する「ローダー」仕様は定義されていません)まだ確定されていない)。 したがって、ES6のインポート/エクスポートを受け入れるには、transpilersを使用する必要があります。現在の業界標準のものは次のことを試して、動作させるためにBabel

です:

  • npm install --save-dev babel-cli babel-preset-env
  • を使用して、プロジェクト内のバベルをインストールし、プロジェクトのルートディレクトリにある.babelrcファイルを作成します。

    { を"プリセット":["env"] }

  • nはあなたのNode.jsの実行コンフィギュレーションは、ノードに-r babel-registerを渡す:

enter image description here

+0

ありがとうございます。魅力のように働きます。ファイルウォッチャーをbabelを使用してトランスバイルできるようにする必要があります(トランスファイルを含むdistフォルダを自動的に作成します)?あるいは、上記の設定で十分ですか? –

+0

'-r babel-register'を追加するだけで十分です - このオプションでは、コードはオンザフライでコンパイルされます。しかし、バベルファイルウォッチャーを使ってファイルをあらかじめコンパイルすることもできます。そのような場合は、実行コンフィギュレーションでコンパイルされたファイル(オリジナルではないファイル)を 'javascriptファイル'として指定する必要があります。プリコンパイルされたコードを実行するとき、 '-r babel-register'を省略するべきです – lena

関連する問題