programing

정적 파일(express.js 포함)

bestprogram 2023. 5. 17. 23:35

정적 파일(express.js 포함)

나는 봉사하고 싶습니다index.html그리고./media하위 디렉터리를 정적 파일로 지정합니다.인덱스 파일은 다음 위치에서 모두 제공되어야 합니다./index.html그리고./URL.

있습니다

web_server.use("/media", express.static(__dirname + '/media'));
web_server.use("/", express.static(__dirname));

하지만 두 번째 라인은 분명히 전체를 지원합니다.__dirname모든 파일을 포함(단순히 포함)index.html그리고.media), 나는 원하지 않습니다.

저도 노력했습니다.

web_server.use("/", express.static(__dirname + '/index.html'));

하지만 기본 URL에 액세스합니다./그리고 나서 요청으로 이어집니다.web_server/index.html/index.html(더블)index.html구성 요소), 당연히 실패합니다.

아이디어 있어요?


그나저나, 저는 익스프레스에서 이 주제에 대한 문서를 전혀 찾을 수 없었습니다.static()그것의 매개변수)...좌절감을 주는.의사 링크도 환영합니다.

이 설정이 있는 경우

/app
   /public/index.html
   /media

그럼 이게 당신이 원하는 걸 얻겠군요

var express = require('express');
//var server = express.createServer();
// express.createServer()  is deprecated. 
var server = express(); // better instead
server.configure(function(){
  server.use('/media', express.static(__dirname + '/media'));
  server.use(express.static(__dirname + '/public'));
});

server.listen(3000);

마지막 폴백으로 이 라인을 떠나는 것이 요령입니다.

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

설명서의 경우 Express는 connect middleware를 사용하기 때문에 connect source code를 직접 보는 것이 더 쉽다는 것을 알게 되었습니다.

예를 들어 이 행은 index.dll이 지원됨을 나타냅니다. https://github.com/senchalabs/connect/blob/2.3.3/lib/middleware/static.js#L140

최신 버전의 express에서는 "createServer"가 더 이상 사용되지 않습니다.이 예는 저에게 유용합니다.

var express = require('express');
var app = express();
var path = require('path');

//app.use(express.static(__dirname)); // Current directory is root
app.use(express.static(path.join(__dirname, 'public'))); //  "public" off of current is root

app.listen(80);
console.log('Listening on port 80');

express.static()첫 번째 매개 변수는 파일 이름이 아닌 디렉터리의 경로가 될 것으로 예상합니다.다음을 포함할 다른 하위 디렉터리를 만들 것을 제안합니다.index.html그리고 그것을 사용합니다.

기본 제공 동작을 포함하여 Express 문서 또는자세한 문서에서 정적 파일 제공:

기본적으로 이 모듈은 디렉토리의 요청에 대한 응답으로 "index.html" 파일을 보냅니다.이 집합을 비활성화하거나 새 인덱스를 제공하려면 문자열 또는 배열을 원하는 순서로 전달합니다.

res.sendFile&express.static둘 다 이것에 효과가 있을 것입니다.

var express = require('express');
var app = express();
var path = require('path');
var public = path.join(__dirname, 'public');

// viewed at http://localhost:8080
app.get('/', function(req, res) {
    res.sendFile(path.join(public, 'index.html'));
});

app.use('/', express.static(public));

app.listen(8080);

어디에public클라이언트 사이드 코드가 있는 폴더입니다.

@ATOzTOA가 제안하고 @Vozzie설명와 같이,path.join인수로 조인할 경로를 선택합니다.+단일 인수를 경로로 전달합니다.

const path = require('path');

const express = require('express');

const app = new express();
app.use(express.static('/media'));

app.get('/', (req, res) => {
    res.sendFile(path.resolve(__dirname, 'media/page/', 'index.html'));
});

app.listen(4000, () => {
    console.log('App listening on port 4000')
})

다음과 같은 복잡한 폴더 구조를 가진 경우

- application
     - assets
         - images
             - profile.jpg
     - web
     - server
        - index.js

당신이 봉사하고 싶다면,assets/images부터index.js

app.use('/images', express.static(path.join(__dirname, '..', 'assets', 'images')))

브라우저에서 보기

http://localhost:4000/images/profile.jpg

더 명확한 설명이 필요하시면 자세히 말씀드리겠습니다.

당신의 앱 안에서 아래를 사용하세요.js

app.use(express.static('folderName'));

(folderName은 파일이 있는 폴더) - 서버 경로를 통해 이러한 자산에 직접 액세스합니다(예: http://localhost:3000/abc.png). abc.png은 folderName 폴더 안에 있습니다.

npm 서버 인덱스 설치

var express    = require('express')
var serveIndex = require('serve-index')
var path = require('path')
var serveStatic = require('serve-static')
var app = express()
var port = process.env.PORT || 3000;
/**for files */
app.use(serveStatic(path.join(__dirname, 'public')));
/**for directory */
app.use('/', express.static('public'), serveIndex('public', {'icons': true}))

// Listen
app.listen(port,  function () {
  console.log('listening on port:',+ port );
})

는 급행 문서에 있는 것을 추가하고 싶은데, 튜토리얼이나 다른 것들에서 잘못 읽히기도 합니다.

app.use(mountpoint, middleware) 

마운트 지점은 가상 경로이며 실제로 존재하는 경우에도 파일 시스템에 없습니다.미들웨어의 마운트 지점은app.js폴더를 누릅니다.

지금이다

app.use('/static', express.static('public')`

가 " " " " 인 파일을 ./static/hell/meow/a.js/public/hell/meow/a.js

HTML 파일에 대한 링크를 제공할 때 발생하는 오류입니다.

이전:

<link rel="stylesheet" href="/public/style.css">

이후:

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

방금 링크에서 정적 디렉터리 경로를 제거했는데 오류가 사라졌습니다.이렇게 하면 오류가 해결됩니다. 한 가지 더, 서버를 만들 위치에 이 줄을 놓는 것을 잊지 마십시오.

var path = require('path');
app.use(serveStatic(path.join(__dirname, 'public')));

다음과 같이 자신만의 기능을 만들 수 있습니다.


const static = (root = "") => app.get(/./, (req, res) => res.sendFile(__dirname + root + req.url));

또한 다음과 같은 express를 사용하여 이 작업을 수행할 수도 있습니다.


app.use('/', express.static(public));

폴더에 인덱스 파일을 지정하기 위해 두 번째 매개 변수 express.static() 메서드를 전달하기만 하면 됩니다.

const express = require('express');
const app = new express();
app.use(express.static('/media'), { index: 'whatever.html' })


언급URL : https://stackoverflow.com/questions/10434001/static-files-with-express-js