我正在关注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文件。我尝试了数千种不同的方法来实际添加这个中间件。我尝试在路由器,静态等之前和之后添加它。
可能相关的其他文件:
据我所知,它的工作原理如下: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。
答案 0 :(得分:0)
经过一段时间的努力,我找到了最好的解决方案:
npm install -g stylus
stylus -w /public/stylesheets&
用于监视文件更改和自动编译的异步任务。不知道怎么让它在Windows下工作,但TBH我不在乎。