无法使用Jade模板在Express应用程序中获取browserify-middleware

时间:2015-11-26 17:11:29

标签: node.js express browserify

我来自RequireJS世界,并希望开始使用browserify。我正在使用ExpressJS和Node构建我的应用程序。我需要在Jade模板视图文件中调用javascript。为了测试,我想使用一个名为[loglevel] 1的简单日志记录模块,我可以在jade模板视图文件中调用它。我通过npm安装了loglevel,模块源现在位于我应用的node_modules文件夹中。

标配新Express应用程序(删节)的app.js内部:

var express      = require('express');
var path         = require('path');
var cookieParser = require('cookie-parser');
var bodyParser   = require('body-parser');
var http         = require('http');
var browserify   = require('browserify-middleware');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.get('/javascripts/bundle.js', browserify(['loglevel']));

然后在我的Jade模板中,我有了这个(删节):

doctype html
//if IE 8
  html.no-js.lt-ie9(lang='en')  
// [if gt IE 8] <!
|  
html.no-js(lang='en')
  // <![endif]
  head
    meta(charset='utf-8')
    meta(name='viewport', content='width=device-width,initial-scale=1.0')
    title App Title
    link(rel='stylesheet', href='stylesheets/app.css')
    script(src="javascripts/bundle.js")
    script.
      log.info('just a test')
  body#landing

当我加载显示此Jade视图的路由时,我的控制台会指出:log is not defined,即使loglevel模块应该定义它。当我检查控制台中的“源”选项卡时,我确实看到浏览器确实加载了loglevel。由于脚本正在加载,我不应该访问由log模块定义的loglevel对象吗?

1 个答案:

答案 0 :(得分:0)

从我在loglevel distribution package看到的内容,它可以导出到CommonJS或AMD,也可以导出为全局。

所以你应该首先require()

script.
  require("loglevel").info("just a test");