[Node.js] Express-js無法獲取我的靜態文件,為什麼?


Answers

我也有同樣的問題。 我用下面的代碼解決了這個問題:

app.use('/img',express.static(path.join(__dirname, 'public/images')));
app.use('/js',express.static(path.join(__dirname, 'public/javascripts')));
app.use('/css',express.static(path.join(__dirname, 'public/stylesheets')));

靜態請求示例:

http://pruebaexpress.lite.c9.io/js/socket.io.js

我需要一個更簡單的解決方案。 它存在嗎?

Question

我已經將我的代碼簡化為我可以創建的最簡單的express-js應用程序:

var express = require("express"),
    app = express.createServer();
app.use(express.static(__dirname + '/styles'));
app.listen(3001);

我的目錄看起來像這樣:

static_file.js
/styles
  default.css

但是,當我訪問http://localhost:3001/styles/default.css ,出現以下錯誤:

Cannot GET / styles /
default.css

我使用express 2.3.3node 0.4.7 。 我究竟做錯了什麼?




在你的server.js中:

var express   =     require("express");
var app       =     express();
app.use(express.static(__dirname + '/public'));

您已分別申報快遞和應用程序,創建名為“公開”的文件夾或只要您喜歡,然後您可以訪問這些文件夾。 在你的模板src中,你已經把相對路徑從/ public(或者你的文件夾名字命名為靜態文件)。 注意路線上的酒吧。




對我有效的是:

而不是寫app.use(express.static(__dirname + 'public/images')); 在你的app.js中

只需寫app.use(express.static('public/images'));

即刪除路徑中的根目錄名稱。 然後你可以在其他js文件中有效地使用靜態路徑,例如:

<img src="/images/misc/background.jpg">

希望這可以幫助 :)




這個為我工作

app.use(express.static(path.join(__dirname, 'public')));

app.use('/img',express.static(path.join(__dirname, 'public/images')));

app.use('/shopping-cart/javascripts',express.static(path.join(__dirname, 'public/javascripts')));

app.use('/shopping-cart/stylesheets',express.static(path.join(__dirname, 'public/stylesheets')));

app.use('/user/stylesheets',express.static(path.join(__dirname, 'public/stylesheets')));

app.use('/user/javascripts',express.static(path.join(__dirname, 'public/javascripts')));



我找到了我的css文件並添加了一條路徑:

app.get('/css/MyCSS.css', function(req, res){
  res.sendFile(__dirname + '/public/css/MyCSS.css');
});

然後它似乎工作。




提供靜態文件(CSS,圖像,js文件)只需兩步:

  1. 將css文件的目錄傳遞到內置的中間件express.static中

    var express = require('express');
    var app = express();
    /*public is folder in my project directory contains three folders
    css,image,js
    */
    //css  =>folder contains css file
    //image=>folder contains images
    //js   =>folder contains javascript files
    app.use(express.static( 'public/css'));
    
  2. 訪問css文件或圖像只需輸入url http://localhost:port/filename.css例如: http://localhost:8081/bootstrap.css

注意:要將css文件鏈接到html,只需鍵入<link href="file_name.css" rel="stylesheet">

如果我寫這個代碼

var express = require('express');
var app = express();
app.use('/css',express.static( 'public/css'));

訪問靜態文件只需輸入url:localhost:port / css / filename.css例如: http://localhost:8081/css/bootstrap.css

注意用html鏈接css文件只需添加以下行

<link href="css/file_name.css" rel="stylesheet">    



Links