구문 오류:예기치 않은 토큰 함수 - 비동기 대기 노드js
Node 버전 6.2.1을 일부 코드와 함께 사용하는 것을 실험하고 있습니다.대부분의 하이퍼 콜백 지향 코드를 더 깔끔하고 성능이 더 좋은 코드로 마이그레이션할 계획입니다.
왜 그런지 모르겠어요, 노드 코드를 실행하려고 하면 단말기에서 오류가 발생합니다.
안녕하세요 z.js
(async function testingAsyncAwait() {
await console.log("Print me!");
})();
로그-
BOZZMOB-M-T0HZ:rest bozzmob$ node helloz.js
/Users/bozzmob/Documents/work/nextgennms/rest/helloz.js:1
(function (exports, require, module, __filename, __dirname) { (async function testingAsyncAwait() {
^^^^^^^^
SyntaxError: Unexpected token function
at Object.exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:513:28)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:458:32)
at tryModuleLoad (module.js:417:12)
at Function.Module._load (module.js:409:3)
at Function.Module.runMain (module.js:575:10)
at startup (node.js:160:18)
at node.js:456:3
BOZZMOB-M-T0HZ:rest bozzmob$ node -v
v6.2.1
제가 무엇을 빠뜨리고 있나요?저도 같은 것에 빛을 좀 비춰주세요.
업데이트 1:
Quentin이 제안한 바벨을 사용하려고 했지만 여전히 다음과 같은 오류가 발생하고 있습니다.
업데이트된 코드
require("babel-core/register");
require("babel-polyfill");
(async function testingAsyncAwait() {
await console.log("Print me!");
})();
로그-
BOZZMOB-M-T0HZ:rest bozzmob$ babel helloz.js > helloz.trans.js
SyntaxError: helloz.js: Unexpected token (3:7)
1 | require("babel-polyfill");
2 |
> 3 | (async function testingAsyncAwait() {
| ^
4 | await console.log("Print me!");
5 | })();
7.6 이전 버전의 노드에서는 비동기 기능이 지원되지 않습니다.
이전 버전을 사용하는 경우 코드(예: Babel 사용)를 노드가 인식하는 JS 버전으로 변환해야 합니다.
즉, 비동기 기능을 지원하지 않는 Node.js 버전은 이제 모두 수명이 지났으며 지원되지 않으므로 이전 버전을 사용하는 경우 업그레이드를 매우 강력하게 고려해야 합니다.
Nodejs는 버전 7.6부터 비동기/대기를 지원합니다.
릴리스 게시물: https://v8project.blogspot.com.br/2016/10/v8-release-55.html
Node.JS는 현재 ES6를 완전히 지원하지 않으므로 비동기 대기 모듈을 사용하거나 Babel을 사용하여 변환할 수 있습니다.
설치하다
npm install --save asyncawait
안녕하세요 z.js
var async = require('asyncawait/async');
var await = require('asyncawait/await');
(async (function testingAsyncAwait() {
await (console.log("Print me!"));
}))();
만약 당신이 단지 실험하는 것이라면, 당신은 사용할 수 있습니다.babel-node
새로운 JavaScript 기능을 사용해 보는 명령줄 도구
설치하다
babel-cli
당신의 프로젝트에$ npm install --save-dev babel-cli
사전 설정 설치
$ npm install --save-dev babel-preset-es2015 babel-preset-es2017
배벨 사전 설정 설정
만들다
.babelrc
다음 내용을 포함하는 프로젝트 루트 폴더:{ "presets": ["es2015","es2017"] }
스크립트 실행 방법
babel-node
$ babel-node helloz.js
이것은 개발과 테스트만을 위한 것이지만 당신이 하고 있는 것처럼 보입니다.결국 웹 팩(또는 유사한 것)을 설정하여 프로덕션을 위한 모든 코드를 변환할 수 있습니다.
- 바벨 노드 샘플 코드: https://github.com/stujo/javascript-async-await/tree/15abac
코드를 다른 곳에서 실행하려면 웹 팩이 도움이 되고 다음은 내가 해결할 수 있는 가장 간단한 구성입니다.
- 전체 웹 팩 예: https://github.com/stujo/javascript-async-await
node v6.6.0
개발에만 사용하면 됩니다.다음을 수행할 수 있습니다.
npm i babel-cli babel-plugin-transform-async-to-generator babel-polyfill --save-dev
그package.json
다음과 같습니다.
"devDependencies": {
"babel-cli": "^6.18.0",
"babel-plugin-transform-async-to-generator": "^6.16.0",
"babel-polyfill": "^6.20.0"
}
만들다.babelrc
파일 작성 및 작성:
{
"plugins": ["transform-async-to-generator"]
}
그런 다음 실행합니다.async/await
다음과 같은 스크립트:
./node_modules/.bin/babel-node script.js
제가 늦게 들어오긴 했지만, 제게 효과가 있었던 것은 다음과 같은 transform-async-generator 및 transform-runtime 플러그인을 설치하는 것이었습니다.
npm i babel-plugin-transform-async-to-generator babel-plugin-transform-runtime --save-dev
그자리의 package.json
과 같습니다: 다과같습다니음다▁would니다 같습과▁be.
"devDependencies": {
"babel-plugin-transform-async-to-generator": "6.24.1",
"babel-plugin-transform-runtime": "6.23.0"
}
를 만들다.babelrc
합니다.
{
"plugins": ["transform-async-to-generator",
["transform-runtime", {
"polyfill": false,
"regenerator": true
}]
]
}
그리고 행복한 코딩을 합니다.async/await
노드 엔진 버전을 포함하고 최신 버전으로 지정합니다. 이 때 버전 8을 추가했습니다.
{
"name": "functions",
"dependencies": {
"firebase-admin": "~7.3.0",
"firebase-functions": "^2.2.1",
},
"engines": {
"node": "8"
},
"private": true
}
다음 파일에
package.json
언급URL : https://stackoverflow.com/questions/37815790/syntaxerror-unexpected-token-function-async-await-nodejs
'programing' 카테고리의 다른 글
텍스트 보기 - 텍스트 크기를 프로그래밍 방식으로 설정하면 작동하지 않는 것 같습니다. (0) | 2023.08.13 |
---|---|
mariadb Regexp 저장 프로시저에서 때때로 빈 상태로 반환됩니다. (0) | 2023.08.13 |
Python 구조의 메모리 내 크기 (0) | 2023.08.08 |
ESLint 달러($)가 정의되지 않았습니다.(정의되지 않음) (0) | 2023.08.08 |
이전 데이터와 새 데이터를 기반으로 조건을 사용하여 업데이트 시 트리거를 생성하는 방법은 무엇입니까? (0) | 2023.08.08 |