javascript - visitFunction 错误是什么意思?

标签 javascript node.js express pug

运行 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;
};

如问题 #1033 中所述,不推荐向 Object 添加新属性的方式对于 express 项目。 Object.defineProperty应该与 enumerable 设置为 false 一起使用。

使用 Object.defineProperty 扩展 Object 的示例

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.definePropertyenumerable:false 来定义新属性解决了这个问题。

希望对您有所帮助。

关于javascript - visitFunction 错误是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13784309/

相关文章:

javascript - 停止由 setTimeout 延迟的 Javascript setInterval

javascript - d3复杂数据,更新现有节点

node.js - 吉普错误!堆栈错误 : EACCES: permission denied, mkdir '/var/www/project_name/node_modules/node-sass/build'

node.js - 如何将 MERN Web 应用程序转换为桌面应用程序?

javascript - 如何将最终用户登录到我的单页应用程序,并将他们重定向到单页应用程序?

javascript - 在 SWF 上放置图像

javascript - Lodash 从 bool 属性等于 true 的对象数组中检索项目的索引

javascript - 修改值 - 通过引用传递

node.js - 使用RedisStore有什么方法可以查看当前 session 吗?

javascript - ExpressJS : Error: Can't set headers after they are sent.