일반적으로 서버가 외부에 어떻게 구성되어 있는지에 대한 내부 경로를 노출하고 싶지 않습니다. /scripts
서버에서 파일이있는 디렉토리에서 파일을 가져 오는 정적 경로를 만들 수 있습니다 . 따라서 파일이에있는 경우 "./node_modules/bootstrap/dist/"
. 그런 다음 페이지의 스크립트 태그는 다음과 같습니다.
<script src="/scripts/bootstrap.min.js"></script>
nodejs와 함께 express를 사용하는 경우 정적 경로는 다음과 같이 간단합니다.
app.use('/scripts', express.static(__dirname + '/node_modules/bootstrap/dist/'));
그런 다음의 모든 브라우저 요청 /scripts/xxx.js
은의 dist
디렉토리에서 자동으로 가져옵니다 __dirname + /node_modules/bootstrap/dist/xxx.js
.
참고 : 최신 버전의 NPM은 중첩되지 않고 최상위에 더 많은 것을 배치하므로 최신 버전의 NPM을 사용하는 경우 경로 이름이 OP의 질문과 현재 답변에 표시된 것과 다릅니다. 그러나 개념은 여전히 동일합니다. 파일이 물리적 서버 드라이브에있는 위치에 당신은 알아 내고 당신은 만들 app.use()
와는 express.static()
클라이언트의 실제 서버 파일 시스템 구성에 노출되지 않도록 해당 파일에 대한 가상 경로를 만들 수 있습니다.
이와 같은 고정 경로를 만들고 싶지 않다면 공개 스크립트를 웹 서버가 사용 /scripts
하거나 원하는 최상위 레벨 로 처리하는 경로에 복사하는 것이 좋습니다. 일반적으로이 복사를 빌드 / 배포 프로세스의 일부로 만들 수 있습니다.
디렉토리에서 특정 파일 하나만 공개하고 해당 디렉토리에있는 모든 파일을 공개하지 않으려면 다음 express.static()
과 같이 사용하지 않고 각 파일에 대해 개별 라우트를 수동으로 작성할 수 있습니다 .
<script src="/bootstrap.min.js"></script>
그 경로를 만드는 코드
app.get('/bootstrap.min.js', function(req, res) {
res.sendFile(__dirname + '/node_modules/bootstrap/dist/bootstrap.min.js');
});
또는로 스크립트의 경로를 계속 지정 /scripts
하려면 다음을 수행하십시오.
<script src="/scripts/bootstrap.min.js"></script>
그 경로를 만드는 코드
app.get('/scripts/bootstrap.min.js', function(req, res) {
res.sendFile(__dirname + '/node_modules/bootstrap/dist/bootstrap.min.js');
});