javascript – 节点说Jade没有方法“renderFile”,为什么?

前端之家收集整理的这篇文章主要介绍了javascript – 节点说Jade没有方法“renderFile”,为什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我安装了玉(npm安装玉器),并转到他们的 github页面来抓住一些例子.这就是我要执行的:

code.jade:

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

code.js:

  1. var jade = require('jade');
  2.  
  3. var options = {
  4. locals: {
  5. users: {
  6. tj: { age: 23,email: 'tj@vision-media.ca',isA: 'human' },tobi: { age: 1,email: 'tobi@is-amazing.com',isA: 'ferret' }
  7. }
  8. }
  9. };
  10.  
  11. console.log(jade)
  12.  
  13. jade.renderFile('code.jade',options,function(err,html){
  14. if (err) throw err;
  15. console.log(html);
  16. });

我将这些文件保存在自己的文件夹中,cd’d我的方式,并执行“node code.js”.然而,节点抛出一个错误,并说,Jade没有方法“renderFile”!你能告诉我我做错了什么,我该怎么办来解决它?

完整的错误信息:

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

解决方法

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

这样的事情可能是你想要的.只要记住你只需要读一次文件.如果您正在动态进行,请确保不要同步阅读.

  1. var jade = require('jade');
  2. var fs = require('fs');
  3.  
  4. var jadetemplate = jade.compile(fs.readFileSync('code.jade','utf8'));
  5.  
  6. var html = jadetemplate({
  7. users: {
  8. tj: { age: 23,isA: 'ferret' }
  9. }
  10. });
  11.  
  12. console.log(html);

更新

这个答案是有效的,当它被写入,但是renderFile是在几个月后添加92c314,所以现在可以使用它.

猜你在找的JavaScript相关文章