我正在使用Node,Express with EJS view engine,nano(用于couchdb),我遇到了这个非常令人费解的错误,我无法通过SO或Google找到任何关于Node/JS的特定信息。我的代码区域似乎触发了这个问题,涉及嵌套的异步回调,它从CouchDB中获取文档,查找一些匹配项,并将对象推送到我的私有作用域中的数组。
和错误:
Express
500 SyntaxError: Missing catch or finally after try
at Object.Function (unknown source)
at exports.compile (/Users/Keith/Desktop/netPoetica/1- Projects/dcc-chargen/node_modules/ejs/lib/ejs.js:234:12)
at Object.exports.render (/Users/Keith/Desktop/netPoetica/1- Projects/dcc-chargen/node_modules/ejs/lib/ejs.js:273:10)
at View.exports.renderFile [as engine] (/Users/Keith/Desktop/netPoetica/1- Projects/dcc-chargen/node_modules/ejs/lib/ejs.js:303:22)
at View.render (/Users/Keith/Desktop/netPoetica/1- Projects/dcc-chargen/node_modules/express/lib/view.js:75:8)
at Function.app.render (/Users/Keith/Desktop/netPoetica/1- Projects/dcc-chargen/node_modules/express/lib/application.js:501:10)
at ServerResponse.res.render (/Users/Keith/Desktop/netPoetica/1- Projects/dcc-chargen/node_modules/express/lib/response.js:719:7)
at exports.dashboard.res.render.msg (/Users/Keith/Desktop/netPoetica/1- Projects/dcc-chargen/routes/index.js:19:29)
at module.exports.read (/Users/Keith/Desktop/netPoetica/1- Projects/dcc-chargen/api/Character.js:56:25)
at Request._callback (/Users/Keith/Desktop/netPoetica/1- Projects/dcc-chargen/node_modules/nano/nano.js:296:11)
4条答案
按热度按时间kh212irz1#
这个错误是在我的EJS模板中的if语句上丢失了一个括号。正如跟踪所显示的,它是在exports.compile函数中(由res.render()调用)-lib作者使用字符串创建新函数,该函数将我的EJS文件功能封装在try块中,这变成了一个悬空的try,因为我在if块中丢失的左括号导致了新的匿名函数中的语法错误,该函数被创建为字符串并使用“new Function('str')"构建。
@ T. J. Crowder指出,堆栈跟踪非常清楚,最终导致了这个解决方案。我删除了一些示例代码,因为它肯定与最终问题无关。
2skhul332#
对我来说,是下面的for循环中缺少{导致了错误。请查找括号的正确结束或开始。
xwbd5t1u3#
这个错误的一些“hello world”例子。
场景1(额外
,
)在
try...catch
之间添加额外的,
(来自“if-else”语法的习惯)。有效代码:
场景2
使用try而不使用catch或finally。
MDN文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch
uidvcgyl4#
我被困在同一个错误,尝试工作的js文件所有的时间来解决这个问题,后来删除的代码写在EJS文件和它的工作。所以问题是因为ejs和其他任何地方。