【问题标题】:Unable to get browserify-middleware in Express app with Jade template to work无法使用 Jade 模板在 Express 应用程序中使用 browserify-middleware
【发布时间】:2016-02-29 20:47:08
【问题描述】:

我来自 RequireJS 世界,想开始使用 browserify。我正在使用 ExpressJS 和 Node.js 构建我的应用程序。我现在需要从 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。由于脚本正在加载,我不应该访问由loglevel 模块定义的log 对象吗?

【问题讨论】:

    标签: node.js express browserify


    【解决方案1】:

    从我在loglevel distribution package 看到的情况来看,它确实可以导出到 CommonJS 或 AMD 或作为全局对象。

    所以你应该先require()ing:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-20
      • 2017-12-18
      • 1970-01-01
      • 2013-02-01
      • 1970-01-01
      • 2015-05-10
      • 2020-06-11
      • 2018-11-26
      相关资源
      最近更新 更多