参数列表后的节点异步语法错误:缺少)

时间:2018-09-22 18:26:37

标签: node.js rest express

我在我的快速应用中不断收到此错误:

/home/ubuntu/workspace/egyplaces/routes/places.js:121
    Place.findById(req.params.id, async function(err,  place){
                                  ^^^^^
SyntaxError: missing ) after argument list

我已三重检查,在任何地方都找不到任何缺少的“)”。这是整个路线的代码。

router.put("/places/:id", middleware.checkPlaceOwnership, upload.single("image"), function(req, res) {
    Place.findById(req.params.id, async function(err, place){
        if(err) {
            req.flash("error", "Place not found.");
            res.redirect("/places");
        } else {
            if(req.file) {
                try {
                    await cloudinary.v2.uploader.destroy(place.imageId);
                    var result = await cloudinary.v2.uploader.upload(req.file.path);
                    place.imageId = result.public_id;
                    place.image = result.secure_url;
                } catch(err) {
                    req.flash("error", err.message);
                    return res.redirect("back");    
                }
            }
            place.name = req.body.place.name;
            place.address = req.body.place.address;
            place.description = req.body.place.description;
            place.save();
            req.flash("success", "Successfully updated!");
            res.redirect("/places/" + req.params.id);
        }
    });  
});

2 个答案:

答案 0 :(得分:1)

您的Node.js版本<7.6,不支持async/await

如果您想使用async/await,请更新您的Node.js。

或者您可以使用.then的承诺(不需要async/await)。

答案 1 :(得分:1)

我要生气了。我的节点版本为v13.14.0,并且出现此错误。我搜索了所有可能的页面,但未找到任何解决方案。昨天,它在工作。我唯一更改的是安装电容器(https://capacitorjs.com/)。但是,在安装之后,我做了一个@Configuration public class ConfigurationClass { @Bean @Inject public PlatformTransactionManager transactionManager(DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Bean @Inject public DataSource dataSource() { // setting config properties here return new HikariDataSource(config); } @Bean @Inject public Repo1 repo1(JDBCTemplate template) { return new Repo1(template); } @Bean @Inject public Repo2 repo2(JDBCTemplate template) { return new Repo2(template); } @Bean @Inject public Repo3 repo3(JDBCTemplate template) { return new Repo3(template); } @Bean @Inject public XService XService(Repo1 repo1, Repo2 repo2, Repo3 repo3) { return new XService(repo1, repo2, repo3); } @Bean @Inject public YService YService(XService xService) { return new YService(xService); } } ,它仍然有效!

经过一些尝试,我设法解决了它。发生这种情况的原因是模块电容器安装了其他版本的electronicjs(我不知道为什么在安装电容器后不会立即引发此错误),并且当我升级软件包(electronjs)时它起作用了。似乎此错误不仅取决于节点。