Node error: SyntaxError: Unexpected token import

匿名 (未验证) 提交于 2019-12-03 02:08:02

问题:

I don't understand what is wrong. I checked other forum talking about transpilation and babel. What do I have to do?

node -v v5.5.0 

my code:

import recast from 'recastai' 

and the error

(function (exports, require, module, __filename, __dirname) { import recast from 'module1'                                                               ^^^^^^  SyntaxError: Unexpected token import     at exports.runInThisContext (vm.js:53:16)     at Module._compile (module.js:387:25)     at Object.Module._extensions..js (module.js:422:10)     at Module.load (module.js:357:32)     at Function.Module._load (module.js:314:12)     at Function.Module.runMain (module.js:447:10)     at startup (node.js:139:18)     at node.js:999:3 

回答1:

ES6 imports are a recently introduced feature and the current stable version of Node does not support them yet. Node.js issue tracker has an open issue for this - but until V8 and Node add support for this feature, you will need to use a transpiler (most popular one being babel) to be able to use imports.

For quickly trying out transpilation, babel provides a web based REPL. This one demonstrates your code being transpiled.

The babel project homepage points to the relevant resources for getting started with Babel and integrating it with your development workflow.

For the simplest setup, visit this setup page and select CLI in the Babel built-ins section.

This basically involves three simple steps:

  1. Install babel-cli : npm install --save-dev babel-cli babel-preset-es2015
  2. Create .babelrc configuration file: echo '{ "presets": ["es2015"] }' > .babelrc
  3. Use the installed module to transpile your source code: ./node_modules/.bin/babel src -d lib

The aforementioned setup page also illustrates how to add an npm script to simplify the last step. Alternatively you can integrate babel with your editor or build chain so that your files are automatically compiled on change.



回答2:

Use babel latest presets

  • Install the latest presets yarn add --dev babel-preset-latest

  • Create .babelrc and add the following { "presets": ["latest"] }

  • Run your script npx babel-node yourscript.js

  • Or in your package.json file add

"scripts": { "start": "babel-node index.js" }



回答3:

Thanks to a NodeJS enhancement proposal we have a path forward. You can use @standard-things/esm

Find the announcement here Simply run

npm i --save @std/esm 

In your packaged today.



回答4:

In case you don't want to deal with babel. This one worked for me.

const calc = require('./my_calc'); let {add, multiply} = calc; 


回答5:

If you are using pm2, then follow these steps:

$ pm2 start app.js --interpreter babel-node 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!