2017-07-31 56 views
1

我想用數據對象自定義錯誤函數並將其導出。現在我的功能看起來是這樣的:如何用數據創建自定義錯誤函數

function dataError(message, data) { 
    this.name = 'dataError'; 
    this.message = message; 
    this.data = data || {}; 


} 
dataError.prototype = Object.create(Error.prototype); 
dataError.prototype.constructor = dataError; 

module.exports = { dataError }; 

但問題是,當我在擴展它,使它的實例:

const errors = require('./Errors'); 
let fieldsErrors = {prop: "value"}; 

let err = new errors.dataError("Validation error", fieldsErrors); 
console.log(err); 

沒有什麼我的數據對象中。我的代碼出了什麼問題,我如何使它工作?

+0

'module.exports = {dataError:dataError};' – MysterX

+1

我部分使用es6,所以這是一個有效的部分。 – bashkovpd

+0

我無法重現。 'err.data'對我來說是'{prop:「value」}'。 – PeterMader

回答

1

嘗試通過去充分ES6做這樣構造的:

class DataError extends Error { 
    constructor (message, data = {}) { 
    super(message) 

    this.data = data 
    } 

    get name() { 
    return this.constructor.name 
    } 
} 

module.exports = { DataError } 

演示:

class DataError extends Error { 
 
    constructor (message, data = {}) { 
 
    super(message) 
 

 
    this.data = data 
 
    } 
 
    
 
    get name() { 
 
    return this.constructor.name 
 
    } 
 
} 
 

 
let dataErr = new DataError('Validation error', { prop: 'value' }) 
 

 
console.log(dataErr.name) 
 
console.log(dataErr.message) 
 
console.log(dataErr.data)