我有一个中间件,可以从REST API加载一些JSON数据。
loadDataStartup.js
'use strict';
const db_contants = require('./db_contants');
async function loadData () {
console.log("*** loadData() called");
var equipmentCategoryArr = await db_contants.getEquipmentCategory();
return equipmentCategoryArr;
}
module.exports = {loadData};
在我的app.js中,我需要通过app.set将数据设置为应用程序级变量,以便以后可以被其他路由器使用。
app.js
const { loadData } = require('./db/loadDataStartup');
var app = express();
app.set('dataOnStartup', async loadData());
我运行npm start
时,它引发了以下错误:
app.set('dataOnStartup', async loadData());
^^^^^
SyntaxError: missing ) after argument list
我使用的是node.js版本8.11.3。
答案 0 :(得分:0)
首先,您没有执行async callAsyncFn()
,而是执行await callAsyncFn()
。因此async loadData()
是语法错误。您可能想做的是await loadData()
。但是,您也不能在入门级应用程序文件中执行此操作,因为该语句不在async
函数中(您只能在await
函数中使用async
)。
解决方法是使用async
IIFE(立即调用函数表达式),如下所示:
const { loadData } = require("./db/loadDataStartup");
var app = express();
(async function() {
app.set("dataOnStartup", await loadData());
// The rest of your app startup logic
})();