programing

노드 오류 : SyntaxError : 예기치 않은 토큰 가져 오기

copyandpastes 2021. 1. 15. 20:19
반응형

노드 오류 : SyntaxError : 예기치 않은 토큰 가져 오기


나는 무엇이 잘못되었는지 이해하지 못한다. 나는 번역과 바벨에 대해 이야기하는 다른 포럼을 확인했다. 나는 무엇을해야합니까?

node -v
v5.5.0

내 코드 :

import recast from 'recastai'

그리고 오류

(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

ES6 가져 오기는 최근에 도입 된 기능이며 현재 안정적인 Node 버전은 아직이를 지원하지 않습니다. Node.js 이슈 트래커는 이에 대한 미해결 문제가지고 있습니다. 하지만 V8과 Node가이 기능에 대한 지원을 추가 할 때까지 임포트를 사용하려면 트랜스 파일러 (가장 인기있는 것은 babel )를 사용해야합니다.

신속하게 트랜스 파일을 시도하기 위해 babel은 웹 기반 REPL을 제공합니다. 이것은 코드가 트랜스 파일되는 것을 보여줍니다.

바벨 프로젝트 홈페이지 에 대한 관련 자원에 대한 포인트 바벨 시작 및 개발 워크 플로우와 통합하기.

가장 간단한 설정은이 설정 페이지를 방문 하여 Babel 기본 제공 섹션에서 CLI를 선택하십시오.

이것은 기본적으로 세 가지 간단한 단계를 포함합니다.

  1. babel-cli 설치 : npm install --save-dev babel-cli babel-preset-es2015
  2. .babelrc구성 파일 생성 :echo '{ "presets": ["es2015"] }' > .babelrc
  3. 설치된 모듈을 사용하여 소스 코드를 트랜스 파일합니다. ./node_modules/.bin/babel src -d lib

앞서 언급 한 설정 페이지는 마지막 단계를 단순화하기 위해 npm 스크립트를 추가하는 방법도 보여줍니다. 또는 babel을 편집기 또는 빌드 체인과 통합하여 변경시 파일이 자동으로 컴파일되도록 할 수 있습니다.


바벨을 다루고 싶지 않은 경우. 이것은 나를 위해 일했습니다.

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

1) 최신 사전 설정 설치

yarn add --dev babel-preset-latest

2) 다음을 생성 .babelrc하고 추가합니다.

{
    "presets": ["latest"]
}

3) 스크립트 실행

npx babel-node yourscript.js

또는 package.json파일 추가

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

시작하기

먼저 babel-cli를 설치하겠습니다.

$ npm install --save-dev babel-cli

일부 사전 설정과 함께.

$ npm install --save-dev babel-preset-es2015 babel-preset-stage-2

package.json :

  "scripts": {
    "start": "babel-node index.js --presets es2015,stage-2"
  }

운영:

$ npm start

nodemon으로 파일 변경 감시 :

nodemon을 사용하여 npm 시작 스크립트를 개선 할 수 있습니다.

$ npm install --save-dev nodemon

그런 다음 npm 시작 스크립트를 업데이트 할 수 있습니다.

package.json :

 "scripts": {
   "start": "nodemon index.js --exec babel-node --presets es2015,stage-2"
  }

운영:

$ npm start 

pm2 를 사용하는 경우 다음 단계를 따르십시오.

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

이 문제를 해결하는 것은 매우 간단하며 importES6 구문이며 Node는 지원이 어렵습니다. Babel 을 트랜스 파일러로 추가하고 package.json으로 이동하여 다음을 추가해야합니다.

먼저 트랜스 파일을 위해 JS 코드를 실행하는 동안 babel을 사용할 스크립트 태그를 추가합니다.

"scripts": {
    "start": "nodemon ./app.js --exec babel-node -e js"
  }

그런 다음 Babel devDependencies로 다음을 추가하십시오.

"devDependencies": {
    "babel-cli": "^6.26.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-stage-0": "^6.24.1"
  }

after this you also need to configure the babel presets file, therefore create .babelrc file at the root directory and define the presets as follows

{
  "presets": [
    "es2015",
    "stage-0"
  ]
}

Don't forget to do an npm install in the end


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.

ReferenceURL : https://stackoverflow.com/questions/37634198/node-error-syntaxerror-unexpected-token-import

반응형