정적 파일(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
'programing' 카테고리의 다른 글
새 사용자를 생성하기 위한 SQL Server 스크립트 (0) | 2023.05.22 |
---|---|
엑셀 셀에서 VBA 기능을 호출하는 방법은? (0) | 2023.05.22 |
MobileDevice.pkg을 신뢰할 수 없으므로 OS X 업데이트 후 Xcode를 열 수 없습니다. (0) | 2023.05.17 |
Windows용 Git Credential Manager를 비활성화하려면 어떻게 해야 합니까? (0) | 2023.05.17 |
jquery.js와 jquery.min.js의 차이점은 무엇입니까? (0) | 2023.05.17 |