[英]What are some best practices for translating internal server error messages to client readable messages in Node.js?
可以说我有几个处理身份验证的模块,每个身份验证提供者一个模块(Google,Facebook,Email等)。
我也有一个使用这些模块来验证用户请求的路由器。
现在让我们说,其中一位用户尝试进行身份验证,而auth模块之一则看到令牌已过期。 我在带有内部消息“令牌已过期”或类似内容的模块内部创建错误,然后将其传递回调用路由器模块。 路由器希望发送回客户端可读的消息,例如“您的会话已过期,请尝试注销并再次登录” 。
因此,问题在于将错误消息从其内部表示形式转换为客户端可读版本的位置。
我有两种选择:
有什么最佳实践可以解决此问题,是否有以某种方式提供帮助的Node / Express模块?
非常感谢
我认为一个好的解决方案是使用Express中间件进行错误处理。
function (err, req, res, next) {
// error translation and response sending
}
使用lang
文件夹,其中索引文件公开特定的语言消息文件。
假设英语eng.js应该像这样:
module.exports = {
VALIDATION_ERROR_IN: 'Validation error in',
NOTHING_UPDATED: 'Nothing Updated',
UPDATE_NON_EXISTING_DOCUMENT_FAILED: 'can\'t update a non-existing document',
ID_REQUIRED: '\'_id\'is required',
USERID_REQUIRED: '\'userId\'is required'
}
和index.js应该像这样:
module.exports = require('./eng');
如果您需要任何其他语言,则可以创建新文件(例如eng.js),其中对象键保持不变,但值是特定于语言的。
捕获服务器错误,并按以下方式使用它:
var message=require('message') // suppose the folder name is 'message'
//....
res.send(message.FIELD_REQUIRED);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.