mvc中的nodejs / jade / express:无法使用手写笔来编译文件

时间:2015-02-28 20:09:25

标签: node.js express stylus

我正在关注this tutorial以使用node.js,Express和Jade设置适当的MVC项目。它很棒。我设置Stylus和nib时遇到问题。

我的文件系统:

/
| app
  | controllers
    | index.server.controller.js
  | models
  | routes
    | index.server.routes.js
  | views
    | stylesheets
      | style.styl
    | index.jade
| config
  | env
  | config.js
  | express.js
| node_modules
  | ...
| public
  | images
  | scripts
  | stylesheets
    | style1.css
| package.json
| server.js

server.js:

var port = 8888
var express = require('./config/express')

var app = express()

app.listen(port)

console.log('server is running on port: ' + port)

express.js:

var express = require('express')
var stylus = require('stylus')
var nib = require('nib')

module.exports = function() {
    var app = express()

    app.set('views', './app/views')
    app.set('view engine', 'jade')

    require('../app/routes/index.server.routes.js')(app)

    app.use(stylus.middleware({
        src: __dirname + '/app/views',
        dest: __dirname + '/public'
    }))

    app.use(express.static('./public'))

    return app
}

index.server.routes.js:

module.exports = function(app) {
    var index = require('../controllers/index.server.controller')

    app.get('/', index.render)
}

index.server.controller.js:

exports.render = function(req, res) {
    res.render('index', {
        title: 'hello world',
        header: 'hi tahr'
    })
}

我知道我甚至不尝试在这里运行nib,它甚至不会编译.styl文件。我尝试了数千种不同的方法来实际添加这个中间件。我尝试在路由器,静态等之前和之后添加它。

可能相关的其他文件:

  • style1.css只是一些随机的.css文件,用于检查它们是否正确加载。玉将装好。
  • config.js为空。

据我所知,它的工作原理如下:server.js要求express.js初始化和配置自己,并等待获得一个完成的快速对象。

Express要求路由器使用index.server.routers.js文件,该文件又要求index.server.controller.js做一些事情。它完成了它的东西,在完成express.js之后可以将app返回到server.js,它将开始在端口8888上侦听。

我知道这可能与我订购文件的顺序有关,可能是因为我渲染太快或某些东西......但是那些.styl文件仍然应该出现!使用debug:true不会在控制台中显示任何内容,并且唯一的消息是"服务器正在端口上运行:8888"。

Firefox开发人员工具说style1.css正确加载,而style.css的查询失败了404(因为Stylus没有编译这样的文件)。

花了几个小时(字面意思),我放弃并请求你的帮助,stackoverflowers。

1 个答案:

答案 0 :(得分:0)

经过一段时间的努力,我找到了最好的解决方案:

npm install -g stylus
stylus -w /public/stylesheets&

用于监视文件更改和自动编译的异步任务。不知道怎么让它在Windows下工作,但TBH我不在乎。