これは私がExpressを使って書いたルートです
const express=require('express');
const router=express.Router();
const trackRepo=require('../model/track');
router.post('/live',function(req,res){
const time=1439832167;
const list=trackRepo.getAlerts(time);
res.json({list:list});
});
module.exports=router;
async / awaitを使用する場所:
const r=require('rethinkdb');
const config=require('../config/rethinkdb');
r.connect(config).then((conn)=>{
module.exports.getAlerts=async (function(time){
const cursor=await r.table('track').filter({createdAt:time}).run(conn);
return await cursor.toArray();
});
});
これは私の app.js
const express=require('express');
const app=express();
const server=require('http').createServer(app);
const bodyParser=require('body-parser');
const cookieParser=require('cookie-parser');
const session=require('express-session');
// Utilities
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());
app.use(cookieParser());
// Template
app.set('view engine','ejs');
// Static
app.use(express.static(__dirname+'/static'));
// Middlewares
app.use(require('./route/web'));
app.use(require('./route/track'));
// Listening
app.listen(4444,function(){
console.log('Server listening on port 4444...');
});
私はという名前のファイルを書きますserver.js
、これはエントリポイントであるはずでapp.js
、サーバーを実行する前にbabelにトランスパイルします
require('babel/register');
require('./app.js');
これは私がインストールするdevDependenciesのリストです package.json
"devDependencies": {
"babel-cli": "^6.16.0",
"babel-core": "^6.17.0",
"babel-plugin-syntax-async-functions": "^6.13.0",
"babel-plugin-transform-async-to-generator": "^6.16.0",
"babel-plugin-transform-regenerator": "^6.16.1",
"babel-polyfill": "^6.16.0",
"babel-preset-es2015": "^6.16.0",
"babel-preset-latest": "^6.16.0"
}
コマンドを使用してサーバーを起動すると、asyncawait行babel-node server.js
でスローさUnexpected token
れます。検索したガイドに従っていて混乱しているのですが、なぜエラーが発生し続けるのかわかりません。どうすればこれを修正できますか?
関数式を引数として指定された関数、タグが付けられているにもかかわらずキーワードを使用する関数式async(function(){ await … })
を呼び出す構文エラーが原因で、例外が発生します。async
await
async
そのはず
router.post('/live', async function(req,res){
const time = 1439832167;
const list = await trackRepo.getAlerts(time);
// ^^^^^ it's a promise, so you need to await it
res.json({list:list});
});
const r = require('rethinkdb');
const config = require('../config/rethinkdb');
const connection = r.connect(config);
module.exports.getAlerts = async function(time) {
// ^^^^^^^^^^^^^^ two keywords, nothing between
const conn = await connection;
// ^^^^^^^^^^^^^^^^ don't export functions asynchronously, just wait inside it
const cursor = await r.table('track').filter({createdAt:time}).run(conn);
return await cursor.toArray();
};
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加