0

来源:github

在尝试通过 expressjs 的render函数传递一个新实例化的 mongoose.model 时,我遇到了以下错误:“ReferenceError:jade is not defined”

控制器...

var mongoose = require("mongoose")
  , Client = mongoose.model("Client")

exports.new = function (req, res) {
    res.render("clients/new", {
        headline: "New Client",
        client: new Client({})
    })
}

我也尝试过client: new Client(),将实例化的对象存储在 var 中,然后将其传递给最终的渲染对象而不做任何更改。删除该new Client({})位可以解决 500 错误,但不能解决手头的问题。

一些配置...

app.set("views", __dirname + "/app/views")
app.set("view engine", "jade")

该模型...

var mongoose = require("mongoose")
  , Schema = mongoose.Schema

var Client = new Schema({
    company: { type: String },
    contact: {
        name: { type: String },
        phone: { type: String },
        email: { type: String }
    },
    created: { type: Date, default: Date.now }
})

mongoose.model("Client", Client)

节点 v0.8.12
Express >= v3.0.0
Mongoose v3.3.1
Jade v0.27.6

来源:github

4

1 回答 1

4

这个问题显然是由jade模板引擎中的关键字冲突引起的。

我发现您的问题描述很有趣,可以自己尝试一下。在将翡翠模板变量标识符更改clientmyclient并传递一个新的猫鼬Client模型实例后,一切正常:

在 app/controllers/clients_controller 中:

...
res.render("clients/new", {
    headline: "New Client",
    myclient: new Client({company: 'Foo Company'})
})
...

在视图/客户/新:

...
input(type='text',name='company',placeholder='Company',value='#{myclient.company}')
...

我分叉了您的存储库,提交了这些更改并向您发送了一个拉取请求(首先是因为我对 git 比较陌生,并抓住一切机会学习更多基础知识)。

于 2012-10-24T10:29:56.890 回答