programing

Vue 2 App에서 Express service 정적

projobs 2022. 9. 22. 22:08
반응형

Vue 2 App에서 Express service 정적

vue 2 프로젝트(Web pack-simple template)에서 사용되는 express static data에 대해 생산 및 개발 구조가 다르기 때문에 문제가 있습니다.

개발: localhost/app

실가동: 서버/일부 디렉토리/애플리케이션

some-directory는 매우 자주 변경되므로 설정 파일에서 동적으로 설정됩니다.

서버의 서빙 파트.js:

if (config.root !== '/') {
  app.use(`/${config.root}`, express.static(path.join(__dirname)));
}

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

변환된 JS 파일이 /dist 폴더에 있습니다.

앱 진입점 역할을 하는 index.html 파일입니다.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>App Demo</title>
  </head>
  <body>
    <div id="app"></div>
    <script src="/dist/build.js"></script>
  </body>
</html>

앱이 루트에 있기 때문에 개발 중에 동작합니다.

그러나 프로덕션 빌드에서는 앱이 서버 하위 폴더에서 제공되기 때문에 작동하지 않습니다.

이 문제를 해결할 방법이 있나요?

감사합니다.

express js 서버가 vue 앱과 동일한 폴더에 있다고 가정하면:

const express = require('express');
const path = require('path');

const hostname = 'localhost';
const port = 3000;

const app = express();
app.use(express.static(path.join(__dirname, 'dist')));

app.get('*', (req, res) => {
  res.sendFile(__dirname, '/dist/index.html');
});

app.listen(port, hostname, () => {
  console.log("Listening at http://%s:%s/", hostname, port);
});

먼저 Vue 앱을 빌드하는 것을 잊지 마세요!

그러나 프로덕션 빌드에서는 앱이 서버 하위 폴더에서 제공되기 때문에 작동하지 않습니다.

"안 돼"라는 문구는 아무 의미도 없어뭐가 안 되는데?클라이언트에 오류가 있습니까?서버에 오류가 있습니까?HTML은 404인가요? HTML은 괜찮지만 이미지는 404인가요?무엇이 문제인지 명시하지 않았기 때문에 여기서는 일반적인 조언만 할 수 있습니다.

Express를 사용하여 라우터를 작성하는 경우:

const router = require('express').Router();
router.get('/a', ...);
router.get('/b', ...);
router.use('/c', express.static(...));

그러면 앱 전체를 모든 서브패스에 쉽게 넣을 수 있습니다.

app.use('/x', router);

서 ''는/x을 사용하다

그러나 HTML 파일 등의 모든 정적 자산은 절대 경로를 사용하지 않도록 해야 합니다. 예를 들어 다음과 같습니다.

<a href="/a/b/c.html">...</a>
<script src="/a/b/c.js"></script>

단, 다음과 같은 상대 경로만 있습니다.

<a href="b/c.html">...</a>
<script src="../../a/b/c.js"></script>

어플리케이션을 그대로 두고 역프록시를 사용하여 필요한 경로 프레픽스를 추가하는 경우에도 마찬가지입니다.이 경우 노드 코드를 조작하는 대신 패스 프레픽스를 추가할 수도 있습니다.노드 앱을 사용한 역방향 프록시에 대한 자세한 내용은 다음 질문을 참조하십시오.

언급URL : https://stackoverflow.com/questions/43491518/express-serve-static-files-in-vue-2-app

반응형