上下文
我克隆了一个基本的 node-browserify boilerplate project把它拿起来。我正在使用 CoffeeScript 。现在,我正在尝试添加 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
关于javascript - 将 jadeify 添加到 node-express-browserify 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9418249/