0 css node.js coffeescript express pug
编辑为ilollar答案(同样的问题)我有app.coffee:
pp.configure ->
publicDir = "#{__dirname}/public"
app.set "views", viewsDir
app.set "view engine", "jade"
app.use(stylus.middleware debug: true, src: viewsDir, dest: publicDir, compile: compileMethod)
app.use(express.static(publicDir))
compileMethod = (str, path) ->
stylus(str)
.set('filename', path)
.set('compress', true)
app.get "/pag",(req,res) ->
res.render "pag",
title: "test",
Run Code Online (Sandbox Code Playgroud)
在/stylesheet/pag.jade中:
...
link(rel='stylesheet', href='pag/css/bootstrap.min.css')
...
Run Code Online (Sandbox Code Playgroud)
当我去"myserver:9090/pag"时,页面没有加载bootstrap.min.css.我收到以下错误:
source :(my folder of proyects)/views/pag/css/bootstrap.min.styl
dest : (my folder of proyects)/public/pag/css/bootstrap.min.css
read : (my folder of proyects)/views/pag/css/bootstrap.min.styl
Error: ENOENT, open '(my folder)/views/pag/css/bootstrap.min.styl'
Run Code Online (Sandbox Code Playgroud)
我哪里错了?我可能错过了什么......任何想法?
首先,如果您还没有设置ExpressJS来提供静态文件,那么您需要这样做:
app.use(express.static(__dirname + '/public'));
然后,从样式表调用中删除"public":
link(rel='stylesheet', href='/pag/css/bootstrap.min.css')
您将"公共"设置为提供静态文件的应用程序根目录,因此无需在调用中指定"public" - "public"现在是root.
更新:
你的viewsDir设定是什么?由于您已将Stylus中间件的源设置为该目录,因此它正在寻找styl要呈现的位置.
您将"public"设置为目标目录 - 如果您在呼叫中包含"public",它只会在public下创建另一个公共目录,这不是您想要的.
尝试将项目中的样式表重新组织为以下内容:
/stylesheets
/pag
/css
bootstrap.min.styl
Run Code Online (Sandbox Code Playgroud)
然后将您的中间件更改为:
app.use(stylus.middleware debug:true, src:'/stylesheets', dest: publicDir, compile: compileMethod)
| 归档时间: |
|
| 查看次数: |
4364 次 |
| 最近记录: |