0

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",

/stylesheet/pag.jade内:

...
link(rel='stylesheet', href='pag/css/bootstrap.min.css')
...

「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'

私はどこが間違っていますか?私はおそらく何かが欠けています..何かアイデアはありますか?

4

1 に答える 1

8

まず、静的ファイルを提供するようにExpressJSを設定していない場合は、次のようにします。

app.use(express.static(__dirname + '/public'));

次に、スタイルシート呼び出しから「public」を削除します。

link(rel='stylesheet', href='/pag/css/bootstrap.min.css')

静的ファイルが提供されるアプリのルートディレクトリとして「public」を設定しているため、呼び出しで「public」を指定する必要はありません。「public」がルートになります。

更新:
あなたのviewsDirセットは何ですか?stylStylusミドルウェアのソースをそのディレクトリに設定したので、ここでレンダリング先を探します。

宛先ディレクトリとして「public」を設定しています。呼び出しに「public」を含めると、publicの下に別のパブリックディレクトリが作成されますが、これは必要なものではありません。

プロジェクトのスタイルシートを次のように再編成してみてください。

/stylesheets
  /pag
    /css
      bootstrap.min.styl

次に、ミドルウェアを次のように変更します。

app.use(stylus.middleware debug:true, src:'/stylesheets', dest: publicDir, compile: compileMethod)

于 2012-07-27T17:20:16.103 に答える