0

我正在尝试使用由 Ruby on Rails 预编译并可通过 JST 获得的客户端 Jade 模板。

我添加了翡翠宝石

gem "jader", "~> 0.0.8"

在配置/初始化程序中,我创建了一个名为 jamr.rb 的初始化程序,其中包含:

Jader.configure do |config|
  config.views_path = Rails.root.join('app','assets','javascripts','views')
  config.mixins_path = Rails.root.join('app','assets','javascripts','mixins')
end

在 app/assets/javascripts/views 我添加了一个 index.js.jst.jade 文件

Hello World!

最后在我的 javascript 文件中,我有:

$('#app-content').append(JST["views/index"]());

当我运行 Rails 并浏览到触发代码的页面时,我收到以下错误:

failed to require "fs"
  (in /my-project/app/assets/javascripts/views/index.js.jst.jade)

我知道问题是jade是一个node.js项目并且require函数有问题。如何修复 require 错误?

4

2 回答 2

1

如果您正在考虑仅在客户端使用 Jade 模板(使用 Rails 资产管道),我推荐https://github.com/inossidabile/jade

于 2013-08-01T18:29:37.883 回答
0

您的 index.jade 模板中可能有错误。从这里的玉 rails-fix pull request来看,rails 使用的 ExecJS 不支持 require("fs") 并且即使是模板错误也会抛出 'failed to require "fs"。希望这应该为您指明正确的方向。

要调试,您可以将 index.jade 模板的内容替换为 1-liner 翡翠占位符,以查看它是否呈现良好。或者,如果可能的话,尝试使用 nodejs 服务器渲染 index.jade 模板,以确保模板渲染时没有任何抱怨。

于 2013-07-24T20:16:41.273 回答