使用Nodemon在Node.js v6.2.0上安装Babel V6.x ES7 Async/Await

Kar*_*son 4 javascript babel node.js

男人这是一个痛苦的设置!我按照安装说明点击了nodemon框:

https://babeljs.io/docs/setup/#installation

npm install babel-cli babel-preset-es2015 --save-dev
Run Code Online (Sandbox Code Playgroud)

.babelrc 在根目录中:

{
  "presets": ["es2015"],
  "plugins": ["transform-async-to-generator"]
}
Run Code Online (Sandbox Code Playgroud)

package.json (我已经安装了更多的babel东西):

...
"devDependencies": {
  "babel-cli": "^6.11.4",
  "babel-core": "^6.13.2",
  "babel-plugin-transform-async-to-generator": "^6.8.0",
  "babel-polyfill": "^6.13.0",
  "babel-preset-es2015": "^6.13.2",
  "babel-preset-node6": "^11.0.0",
  "babel-register": "^6.11.6"
},
"scripts": {
  "startn": "nodemon app.js",
  "babel-node": "babel-node --presets=es2015 --ignore='foo|bar|baz'",
  "babel-dev": "nodemon --exec npm run babel-node -- experiment/socketio/test.js"
},
...
Run Code Online (Sandbox Code Playgroud)

test.js:

(async function () { // <-- error occues here
    const value = await 123;
    console.log(value);
})().then(() => {
    console.log('Done');
});
Run Code Online (Sandbox Code Playgroud)

我运行命令run-script babel-dev如下所示.错误:

karl@karl-ux303ln:~/dev/sketch$ npm run-script babel-dev

> sketch@0.0.1 babel-dev /home/karl/dev/sketch
> nodemon --exec npm run babel-node -- experiment/socketio/test.js

[nodemon] 1.10.0
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `npm run babel-node experiment/socketio/test.js`

> sketch@0.0.1 babel-node /home/karl/dev/sketch
> babel-node --presets=es2015 --ignore='foo|bar|baz' "experiment/socketio/test.js"

/home/karl/dev/sketch/node_modules/babel-core/lib/transformation/file/index.js:591
      throw err;
      ^

SyntaxError: /home/karl/dev/sketch/experiment/socketio/test.js: Unexpected token (1:7)
> 1 | (async function () {
    |        ^
  2 |     const value = await 123;
  3 |     console.log(value);
  4 | })().then(() => {
    at Parser.pp.raise (/home/karl/dev/sketch/node_modules/babylon/lib/parser/location.js:22:13)
    at Parser.pp.unexpected (/home/karl/dev/sketch/node_modules/babylon/lib/parser/util.js:89:8)
    at Parser.pp.expect (/home/karl/dev/sketch/node_modules/babylon/lib/parser/util.js:83:33)
    at Parser.pp.parseParenAndDistinguishExpression (/home/karl/dev/sketch/node_modules/babylon/lib/parser/expression.js:582:12)
    at Parser.pp.parseExprAtom (/home/karl/dev/sketch/node_modules/babylon/lib/parser/expression.js:481:19)
    at Parser.pp.parseExprSubscripts (/home/karl/dev/sketch/node_modules/babylon/lib/parser/expression.js:277:19)
    at Parser.pp.parseMaybeUnary (/home/karl/dev/sketch/node_modules/babylon/lib/parser/expression.js:257:19)
    at Parser.pp.parseExprOps (/home/karl/dev/sketch/node_modules/babylon/lib/parser/expression.js:188:19)
    at Parser.pp.parseMaybeConditional (/home/karl/dev/sketch/node_modules/babylon/lib/parser/expression.js:165:19)
    at Parser.pp.parseMaybeAssign (/home/karl/dev/sketch/node_modules/babylon/lib/parser/expression.js:128:19)

npm ERR! Linux 3.19.0-65-generic
npm ERR! argv "/home/karl/.nvm/versions/node/v6.2.0/bin/node" "/home/karl/.nvm/versions/node/v6.2.0/bin/npm" "run" "babel-node" "experiment/socketio/test.js"
npm ERR! node v6.2.0
npm ERR! npm  v3.8.9
npm ERR! code ELIFECYCLE
npm ERR! sketch@0.0.1 babel-node: `babel-node --presets=es2015 --ignore='foo|bar|baz' "experiment/socketio/test.js"`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the sketch@0.0.1 babel-node script 'babel-node --presets=es2015 --ignore='foo|bar|baz' "experiment/socketio/test.js"'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the sketch package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     babel-node --presets=es2015 --ignore='foo|bar|baz' "experiment/socketio/test.js"
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs sketch
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls sketch
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/karl/dev/sketch/npm-debug.log
[nodemon] app crashed - waiting for file changes before starting...
Run Code Online (Sandbox Code Playgroud)

我也尝试过切换到节点v4.4.7并将npm升级到3.10.6.还是一样的错误.

Kar*_*son 8

1)删除所有babel模块(删除所有东西,这是我发现的一个小马车)

2)安装以下内容:

npm install --save-dev babel-polyfill babel-preset-es2015 babel-preset-stage-3 babel-register
Run Code Online (Sandbox Code Playgroud)

3)修复.babelrc文件:

{
  "presets": [
    "es2015",
    "stage-3"
  ]
}
Run Code Online (Sandbox Code Playgroud)

4)检查它是否有效(-r标志是预加载模块):

node -r babel-register -r babel-polyfill experiment/socketio/test.js
Run Code Online (Sandbox Code Playgroud)

要修复nodemon:

nodemon -r babel-register -r babel-polyfill experiment/socketio/test.js
Run Code Online (Sandbox Code Playgroud)