[node.js] Express-js가 정적 파일을 가져올 수없는 이유는 무엇입니까?

코드를 가장 간단한 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.3하고 node 0.4.7있습니다. 내가 뭘 잘못하고 있죠?



답변

시도하십시오 http://localhost:3001/default.css.

/styles요청 URL에 포함 시키 려면 다음을 사용하십시오.

app.use("/styles", express.static(__dirname + '/styles'));

이 페이지 의 예를 살펴보십시오 .

//Serve static content for the app from the "public" directory in the application directory.

    // GET /style.css etc
    app.use(express.static(__dirname + '/public'));

// Mount the middleware at "/static" to serve static content only when their request path is prefixed with "/static".

    // GET /static/style.css etc.
    app.use('/static', express.static(__dirname + '/public'));


답변

나도 같은 문제가있어. 다음 코드로 문제를 해결했습니다.

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

더 간단한 해결책이 필요합니다. 존재합니까?


답변

default.css 에 이용 가능해야한다 http://localhost:3001/default.css

stylesapp.use(express.static(__dirname + '/styles'));단지는에보고 표현 알려줍니다 styles봉사하는 정적 파일 디렉토리. 사용 가능한 경로의 일부를 혼동하지 않습니다.


답변

이것은 나를 위해 작동합니다 :

app.use('*/css',express.static('public/css'));
app.use('*/js',express.static('public/js'));
app.use('*/images',express.static('public/images'));


답변

server.js에서 :

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

express와 app을 별도로 선언하고 ‘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">

도움이 되었기를 바랍니다 🙂


답변

내 응용 프로그램에서 Bootstrap CSS, JS 및 Fonts를 사용하고 있습니다. 나는라는 폴더 생성 asset루트 응용 프로그램의 디렉토리와 장소 그 안에 모든 폴더에 있습니다. 그런 다음 서버 파일에서 다음 줄을 추가했습니다.

app.use("/asset",express.static("asset"));

이 줄을 사용하면 다음과 같은 경로 접두사 asset에서 디렉토리 에있는 파일을로드 할 수 있습니다 ./assethttp://localhost:3000/asset/css/bootstrap.min.css

이제 뷰에서 아래처럼 CSS와 JS를 간단히 포함시킬 수 있습니다.

<link href="/asset/css/bootstrap.min.css" rel="stylesheet">