静态css没有在快递玉中显示

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)

我哪里错了?我可能错过了什么......任何想法?

red*_*nce 8

首先,如果您还没有设置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)