上下文
我克隆了一个基本的node-browserify boilerplate project并得到了它.我正在使用咖啡脚本.现在,我正在尝试将jadeify添加到等式中,如下所示:
bundle = browserify
entry: __dirname + "/app/init.coffee"
debug: true
mount: "/app.js"
bundle.use jadeify __dirname + '/views'
app.use bundle
这是在我尝试在任何地方使用jadeify之前.
问题
一切正常,直到我将bundle.use(jadeify(__ dirname’/ views’))作为中间件添加到browserify中.然后我在浏览器的控制台中收到以下错误消息:
Uncaught ReferenceError: __require is not defined
根据浏览器的控制台,此消息的来源是/app.js.
题
一旦我尝试为browserify添加jadeify中间件,为什么这个脚本会因错误而失败?
动机
我认为在客户端重用服务器端jade模板会更方便,所以我放弃了下划线模板而转向jade.在做我的研究时,我遇到了this solution to a related question,建议使用jadeify.这似乎可行,但似乎有些失败.
解决方法:
可以使用browjadify绕过jadeify
Usage:
browjadify --entry=app.coffee >bundle.js
来源:browjadify
#!/usr/bin/env node
var jade = require('jade')
var browserify = require('browserify')
var fs = require('fs');
var argv = require("optimist").argv;
var b = browserify()
b.register('.jade', function(body) {
var options = {"client": true, "compileDebug": false};
body = "module.exports = " + jade.compile(body, options).toString() +";";
return body;
});
var jaderuntime = require('fs').readFileSync(__dirname+"/node_modules/jade/runtime.js", 'utf8');
b.prepend(jaderuntime); // Brings in var jade that jade.compile needs
b.addEntry(argv.entry); // gets browserify to do its thing
console.log(b.bundle()); // the bundled output