2012-12-09 57 views
4

运行[email protected] + [email protected] + [email protected] + [email protected]。 由于某种原因出现以下错误。有人知道这意味着什么吗?visitFunction错误是什么意思?

我不认为我做任何奇怪的事情。这是当我做发生: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) 
+0

它必须是这个版本的Jade中的错误?我将我的Jade版本降级到0.25,现在它工作正常。降级通过:'npm install jade @ 0.25' –

回答

6

一个为什么你会得到这个错误的原因是因为你添加新的属性(通常的方法),以Object.prototype

例子:

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

对于快递项目,不建议按照问题#1033中的说明向Object添加新属性。 Object.defineProperty应该与enumerable一起使用,而不是false

Object.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的例子我有完全相同的问题,并使用Object.definePropertyenumerable:false定义新特性解决了这个问题。

我希望这会有所帮助。

+3

+1像一个魅力 –

+0

谢谢你简单和伟大的答案。但为什么会发生? – alix