簡體   English   中英

Node.js異步等待快遞

[英]Node.js async await in express

我正在構建一個端點/ 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");
});

這引發以下錯誤

語法錯誤:意外令牌(

在createScript(vm.js:56:10)在Object.runInThisContext(vm.js:97:10)在Module._compile(module.js:542:28)在Object.Module._extensions..js(module.js :579:10)在Module.load(module.js:487:32)在tryModuleLoad(module.js:446:12)在Function.Module._load(module.js:438:3)在Module.runMain(模塊.js:604:10)在啟動時(bootstrap_node.js:149:9)在運行時(bootstrap_node.js:389:7)

我正在將npm 3.10.10與節點v6.11.3一起使用。

有人可以指導我哪里出問題了嗎?

Async / await僅在節點版本8和更高版本中可用 如果可能,請嘗試使用較新的Node版本。

而不是調用:

return eval(user);

您應該致電:

res.send(JSON.parse(user));

要么

res.send(JSON.stringify(JSON.parse(user)));

並在返回對象時使用bodyParser.json()中間件。

同樣在捕獲塊中

res.status(500).send('there was an error');

並將錯誤記錄到控制台。

---

同樣,fs.readFile采用另一個參數,即編碼。 使用“ utf-8”。 如果不使用緩沖區,它將返回緩沖區,而不是字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM