【发布时间】:2019-04-22 16:08:58
【问题描述】:
我正在构建一个端点 /users,它将返回 Users.json 文件中的内容。我正在使用 aysnc/await 功能。
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: Unexpected token (
在 CreateScript (vm.js:56:10) 在 Object.runInThisContext (vm.js:97:10) 在 Object.Module._extensions..js 的 Module._compile (module.js:542:28) (module.js:579:10) 在 Module.load (module.js:487:32) 在 tryModuleLoad (module.js:446:12) 在 Function.Module._load (module.js:438:3) 在 Module.runMain (module.js:604:10) 在运行 (bootstrap_node.js:389:7) 在 启动(bootstrap_node.js:149:9)
我正在使用带有节点 v6.11.3 的 npm 3.10.10。
有人可以指导我哪里出错了吗?
【问题讨论】:
-
Never ever use
evalto parse JSON! 在 node.js 中,JSON.parse始终可用。 -
什么是
Promise.promisify?你的意思是util.promisify? -
使用您发布的代码我没有收到任何错误。
-
是的。我的意思是 util.promisify(),但我想这不会导致这个问题。 @Bergi 除了 util.promisify 是否有任何代码更改?我仍然遇到同样的错误
-
看起来 node v6.11.3 不支持
async/await语法。更新它。
标签: javascript node.js express async-await