javascript - Node 说 Jade 没有方法 "renderFile",为什么?

标签 javascript html node.js pug

我安装了 Jade (npm install jam) 并访问了他们的 github 页面以获取一些示例。这就是我想要执行的:

code.jade:

- var title = "Things"
h1= title
ul#users
  - each user, name in users
    - if (user.isA == "ferret")
      li(class: 'user-' + name) #{name} is just a ferret
    - else
      li(class: 'user-' + name) #{name} #{user.email}

code.js:

var jade = require('jade');

var options = {
    locals: {
        users: {
            tj: { age: 23, email: 'tj@vision-media.ca', isA: 'human' },
            tobi: { age: 1, email: 'tobi@is-amazing.com', isA: 'ferret' }
        }
    }
};

console.log(jade)

jade.renderFile('code.jade', options, function(err, html){
    if (err) throw err;
    console.log(html);
});

我将这些文件保存在他们自己的文件夹中,cd 到那里并执行“node code.js”。但是,node 抛出一个错误,说 Jade 没有方法“renderFile”!你能告诉我我做错了什么,我应该怎么做才能解决它?

完整的错误信息:

node.js:134
        throw e; // process.nextTick error, or 'error' event on first tick
        ^
TypeError: Object #<Object> has no method 'renderFile'
    at Object.<anonymous> (/home/yann/javascript/jade/code.js:18:6)
    at Module._compile (module.js:402:26)
    at Object..js (module.js:408:10)
    at Module.load (module.js:334:31)
    at Function._load (module.js:293:12)
    at Array.<anonymous> (module.js:421:10)
    at EventEmitter._tickCallback (node.js:126:26)

最佳答案

看起来较新版本的 Jade 使用了不同的 API,没有更多的“renderFile”方法。看看这里的“公共(public) API”部分:https://github.com/visionmedia/jade

这样的东西可能就是你想要的。请记住,您只需要读取一次文件。如果是动态做的,一定不要同步读取。

var jade = require('jade');
var fs = require('fs');

var jadetemplate = jade.compile(fs.readFileSync('code.jade', 'utf8'));

var html = jadetemplate({
  users: {
    tj: { age: 23, email: 'tj@vision-media.ca', isA: 'human' },
    tobi: { age: 1, email: 'tobi@is-amazing.com', isA: 'ferret' }
  }
});

console.log(html);

更新

这个答案在编写时是有效的,但是 renderFile 在几个月后被添加回 92c314 ,所以现在可以使用了。

关于javascript - Node 说 Jade 没有方法 "renderFile",为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7292477/

相关文章:

javascript - Webpack 可以帮助我将一个大的单个文件分成较小的部分吗?

javascript - 在具有相同类的多个 div 上启动 ProgressBar

javascript - 查找一个字符,然后使用 jQuery 在其前面插入 HTML 标签

node.js - 将 Passport-local 与 Restify 集成时遇到问题

javascript - ReactJS:为什么在setState更改状态时调用构造函数

javascript - 如何将长值传递给javascript函数

html - Bootstrap 列排序

html - flexbox - 如何通过命题根据列的宽度调整居中椭圆的大小?

node.js - GraphQL 使用 GraphQL 工具吸引用户

javascript - 如果表情符号是国旗,则使用正则表达式进行检测