当前位置: 首页 > 知识库问答 >
问题:

SyntaxError:意外的令牌函数-异步等待节点JS

花阳秋
2023-03-14

我正在尝试使用节点版本6.2.1与我的一些代码。计划将大多数面向超回调的代码迁移到看起来更干净、性能更好的代码。

我不知道为什么,当我试图执行节点代码时,终端抛出了一个错误。

你好。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:

我试着按照昆汀的建议使用巴贝尔,但是,我仍然得到以下错误。

更新代码-

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 | })();

共有3个答案

聂迪
2023-03-14

节点。JS目前不完全支持ES6,所以您可以使用AsyncWait模块或使用Bable传输它。

安装

npm install --save asyncawait

你好。js

var async = require('asyncawait/async');
var await = require('asyncawait/await');

(async (function testingAsyncAwait() {
    await (console.log("Print me!"));
}))();
柯甫
2023-03-14

Nodejs支持7.6版的异步/等待。

发布帖子:https://v8project.blogspot.com.br/2016/10/v8-release-55.html

戚俊健
2023-03-14

早于7.6版的节点版本不支持异步函数。

如果您使用的是旧版本,则需要将代码(例如使用Babel)传输到Node能够理解的JS版本。

也就是说,节点的版本。不支持异步功能的JS现在都是生命的终结,不受支持,所以如果您使用的是早期版本,则应该非常强烈地考虑升级。

 类似资料:
  • 问题内容: 我正在尝试将Node 6.2.1 版与一些代码一起使用。原计划将大多数面向超级回调的代码迁移到看起来更干净甚至性能更好的代码上。 我不知道为什么,当我尝试执行节点代码时,终端抛出一个错误。 helloz.js 日志 我想念什么?请给我一些启示。 更新1: 我尝试按照Quentin的建议使用Babel,但是,我仍然收到以下错误。 更新的代码- 日志 问题答案: 7.6版之前的Node版本

  • 因此,我尝试使用async/await,但出现以下错误: 代码如下:

  • 使聊天应用程序通过Node in action引用,并在运行server.js时,得到以下错误:function serveStatic(response,cache,absPath)^^^^^^^^^^^^syntaxerror:exports.runinthiscontext(VM.JS:73:16)在module._compile(module.js:543:28)在object.modul

  • 问题内容: 我不明白怎么了。我在其他论坛上讨论了翻译和通天塔。我需要做什么? 我的代码: 和错误 问题答案: ES6导入是最近引入的功能,并且Node的当前稳定版本尚不支持它们。Node.js问题跟踪器对此存在一个未解决的问题 -但在V8和Node添加对此功能的支持之前,您将需要使用编译器(最受欢迎的是babel)才能使用导入。 为了快速尝试转译,babel提供了基于Web的REPL。这段演示了您

  • 问题内容: 尝试进行呼叫并检索一个非常简单的一行JSON文件。 这是RAW请求: 这是RAW回应: 响应中返回了JSON(红色:#f00),但Chrome报告了 Uncaught SyntaxError:Unexpected token:colors.json:1 如果我直接导​​航到url本身,则返回JSON并显示在浏览器中。 如果我将colors.json的内容粘贴到JSLINT中,则json