Error: template instance error instantiating
Error: template instance error instantiating
如果 req
太短,我会尝试显示错误消息。这是代码:
import std.stdio;
import vibe.d;
Database mydatabase;
void main()
{
// ...
router.get("*", &myStuff); // all other request
listenHTTP(settings, router);
runApplication();
}
@errorDisplay!showPageNotFound
void myStuff(HTTPServerRequest req, HTTPServerResponse res) // I need this to handle any accessed URLs
{
if(req.path.length > 10)
{
// ...
}
else
{
throw new Exception("Nothing do not found");
}
}
void showPageNotFound(string _error = null)
{
render!("error.dt", _error);
}
错误是:
source\app.d(80,2): Error: template instance app.showPageNotFound.render!("error.dt", _error).render!("app", "app.showPageNotFound") error instantiating
如果我在做:
void showPageNotFound(string _error = null)
{
res.render!("error.dt", _error);
}
我遇到错误:
Error: undefined identifier 'res'
如果您查看 error instantiating
上面的错误,您会看到父 class 的 vibe.d
tries to call init
方法在哪里render!
被调用,但是您的代码没有父 class.
这意味着目前您无法在 errorDisplay
调用的 class 之外的函数中呈现任何模板。事实上,当将 &((new NewWebService).myStuff
传递给 router.any
时,errorDisplay
根本不起作用(错误?)。 vibe.d
存储库中的所有示例都使用 class 和 errorDisplay
.
您可以将 getStuff
和 showPageNotFound
包装在 class 中,但是 router.any("*", ...
是不可能的,因为它仅用于单个函数,并且 @path
属性在与 registerWebInterface
.
一起使用时不支持通配符
对此的解决方案不是抛出异常,而是在 myStuff
中呈现错误。尽管很差,但我认为您想使用 errorDisplay
.
更好的解决方案是在 vibe.d
中实现功能,将 req
参数传递给 errorDisplay
调用的函数(并修复一个错误?errorDisplay
不能在 class 之外使用,或者更好的是,当与 registerWebInterface
.
一起使用时,支持 @path
中的通配符
如果 req
太短,我会尝试显示错误消息。这是代码:
import std.stdio;
import vibe.d;
Database mydatabase;
void main()
{
// ...
router.get("*", &myStuff); // all other request
listenHTTP(settings, router);
runApplication();
}
@errorDisplay!showPageNotFound
void myStuff(HTTPServerRequest req, HTTPServerResponse res) // I need this to handle any accessed URLs
{
if(req.path.length > 10)
{
// ...
}
else
{
throw new Exception("Nothing do not found");
}
}
void showPageNotFound(string _error = null)
{
render!("error.dt", _error);
}
错误是:
source\app.d(80,2): Error: template instance app.showPageNotFound.render!("error.dt", _error).render!("app", "app.showPageNotFound") error instantiating
如果我在做:
void showPageNotFound(string _error = null)
{
res.render!("error.dt", _error);
}
我遇到错误:
Error: undefined identifier 'res'
如果您查看 error instantiating
上面的错误,您会看到父 class 的 vibe.d
tries to call init
方法在哪里render!
被调用,但是您的代码没有父 class.
这意味着目前您无法在 errorDisplay
调用的 class 之外的函数中呈现任何模板。事实上,当将 &((new NewWebService).myStuff
传递给 router.any
时,errorDisplay
根本不起作用(错误?)。 vibe.d
存储库中的所有示例都使用 class 和 errorDisplay
.
您可以将 getStuff
和 showPageNotFound
包装在 class 中,但是 router.any("*", ...
是不可能的,因为它仅用于单个函数,并且 @path
属性在与 registerWebInterface
.
对此的解决方案不是抛出异常,而是在 myStuff
中呈现错误。尽管很差,但我认为您想使用 errorDisplay
.
更好的解决方案是在 vibe.d
中实现功能,将 req
参数传递给 errorDisplay
调用的函数(并修复一个错误?errorDisplay
不能在 class 之外使用,或者更好的是,当与 registerWebInterface
.
@path
中的通配符