2012-12-09 56 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