visitFunction错误是什么意思?

运行Node.js@0.8.15 + Express@3.0.4 + Jade@0.27.7 + Stylus@0.31.0。 出于某种原因得到以下错误。 有人知道这是什么意思吗?

我不认为我做了什么奇怪的事情。 这是我在做的时候发生的事情: res.render(view, response);

 Property 'visitFunction' of object #<Object> is not a function at Object.Compiler.visitNode (/app/node_modules/jade/lib/compiler.js:176:32) at Object.Compiler.visit (/app/node_modules/jade/lib/compiler.js:161:10) at Object.Compiler.visitBlock (/app/node_modules/jade/lib/compiler.js:253:12) at Object.Compiler.visitNode (/app/node_modules/jade/lib/compiler.js:176:32) at Object.Compiler.visit (/app/node_modules/jade/lib/compiler.js:161:10) at Object.Compiler.compile (/app/node_modules/jade/lib/compiler.js:78:10) at parse (/app/node_modules/jade/lib/jade.js:101:23) at Object.exports.compile (/app/node_modules/jade/lib/jade.js:163:9) at Object.exports.render (/app/node_modules/jade/lib/jade.js:215:17) at View.exports.renderFile [as engine] (/app/node_modules/jade/lib/jade.js:243:13) 

你可能会遇到这个错误的原因之一是你添加了新的属性(通常是方法)到Object.prototype

例:

 Object.prototype.someNewMethod = function (value1, value2) { // ... perform some operations return this; }; 

对于快速项目,不build议按照#1033的规定向Object添加新属性。 Object.defineProperty应该使用enumerable设置为false

使用Object.defineProperty扩展ObjectObject.defineProperty

 Object.defineProperty( Object.prototype, 'someNewMethod', { writable : false, // Will not show up in enumerable properties (including for-in loop). enumerable : false, configurable : false, value : function (value1, value2) { // ... perform some operations return this; } } ); 

我有完全相同的问题,并使用Object.defineProperty enumerable:false来定义新的属性解决了问题。

我希望这会有所帮助。