我有,我有我自己的自定義錯誤Node.js的項目:類型錯誤:Object.setPrototypeOf呼籲null或undefined
'use strict';
require('util').inherits(module.exports, Error);
function CustomError(message, extra) {
Error.captureStackTrace(this, this.constructor);
this.name = this.constructor.name;
this.type = 'CustomError';
this.message = message;
this.extra = extra;
};
module.exports = CustomError;
過去,這很好地工作。我可以Throw new CustomError('my message', dataObject)
並獨立於提供錯誤類型捕獲該錯誤並相應地控制程序流。
但是,自從將Node更新到最新的穩定版本(v6.4.0)以來,它現在已被破壞。當我運行我的單元測試,我得到的錯誤:
TypeError: Object.setPrototypeOf called on null or undefined
at Function.setPrototypeOf (native)
at Object.exports.inherits (util.js:973:10)
at Object.<anonymous> (CustomError.js:3:17)
at Module._compile (module.js:556:32)
at Object.Module._extensions..js (module.js:565:10)
at Module.load (module.js:473:32)
at tryModuleLoad (module.js:432:12)
at Function.Module._load (module.js:424:3)
at Module.require (module.js:483:17)
at require (internal/module.js:20:19)
'module.exports === exports === {}',默認情況下它不是'undefined'。 – mscdex
@mscdex正確,固定。 'setPrototypeOf'不直接調用 – Bergi
現在看來它真的很明顯,它指出了我!對於它的工作方式,我仍然有點困惑。我開始懷疑代碼是否發生了變化,但是git的歷史記錄卻說明了這一點,並且它正在生產中使用舊版本的Node。 –