Javascript Node.js async在express中等待
我正在构建一个endpoint/users,它将返回users.json文件中的内容。我正在使用aysnc/等待功能Javascript Node.js async在express中等待,javascript,node.js,express,async-await,Javascript,Node.js,Express,Async Await,我正在构建一个endpoint/users,它将返回users.json文件中的内容。我正在使用aysnc/等待功能 var express = require('express'); var app = express(); var fs = require('fs'); var readFile = Promise.promisify(fs.readFile); const util = require('util'); app.get('/users', async (req, res,
var express = require('express');
var app = express();
var fs = require('fs');
var readFile = Promise.promisify(fs.readFile);
const util = require('util');
app.get('/users', async (req, res, next) => {
try {
const user = await readFile('./users.json');
return eval(user);
//res.send(JSON.parse(data));
// res.json(user);
} catch (e) {
//this will eventually be handled by your error handling middleware
next(e)
}
});
app.listen(3000,function(){
console.log("listening on port 3000");
});
这将抛出以下错误
SyntaxError:意外标记(
在Object.runInThisContext(vm.js:97:10)上的createScript(vm.js:56:10)
在Module.\u编译(Module.js:542:28)在Object.Module.\u扩展..js
(module.js:579:10)在tryModuleLoad的module.load(module.js:487:32)处
(module.js:446:12)at Function.module.\u加载(module.js:438:3)at
Module.runMain(Module.js:604:10)在运行时(bootstrap_node.js:389:7)在
启动(bootstrap_node.js:149:9)
我将NPM3.10.10与节点v6.11.3一起使用
有人能告诉我哪里出了问题吗?不要打电话:
返回评估(用户);
你应致电:
res.send(JSON.parse(user));
或
res.send(JSON.stringify(JSON.parse(user));
如果返回对象,则使用bodyParser.json()中间件
同样,在挡块中
res.status(500.send)(“出现错误”);
并将错误记录到您的控制台
---
另外,fs.readFile接受另一个参数,即编码。使用“utf-8”。如果不使用它,它将返回一个缓冲区,而不是字符串。而不是调用:
返回评估(用户);
你应致电:
res.send(JSON.parse(user));
或
res.send(JSON.stringify(JSON.parse(user));
如果返回对象,则使用bodyParser.json()中间件
同样,在挡块中
res.status(500.send)(“出现错误”);
并将错误记录到您的控制台
---
另外,fs.readFile采用另一个参数,即编码。使用“utf-8”。如果不使用它,它将返回缓冲区,而不是字符串。。如果可能,请尝试使用较新的节点版本。。如果可能,请尝试使用较新的节点版本。在Node.js中,
JSON.parse
始终可用。什么是promisify
util.promisify
?使用您发布的代码我没有发现任何错误。是的..我是说util.promisify(),但我想这并不是问题的原因。@Bergi除了util.promisify之外,还有其他代码更改吗?我仍然会收到相同的错误看起来node v6.11.3不支持async
/await
语法。请更新它。在node.js中,JSON.parse
始终可用。什么是promisify.promisify
你是说util.promisify
?我使用你发布的代码没有任何错误。是的..我是说util.promisify(),但我想这并不是问题的根源。@Bergi除了util.promisify之外,还有其他代码更改吗?我仍然会收到相同的错误。看起来node v6.11.3不支持async
/await
语法。更新它。应该是版本8。Nodejs 7.5只支持带有harmony标志的async await。谢谢。它确实有效将节点版本升级到v10.13.0应该是版本8。Nodejs 7.5仅支持带有harmony标志的异步等待。谢谢。将节点版本升级到v10.13.0后,它确实起作用