webpack과 HtmlWebpackPlugin을 사용하여 번들 된 js 및 css를 html 템플릿 파일에 삽입하고 있습니다.
new HtmlWebpackPlugin({
template: 'client/index.tpl.html',
inject: 'body',
filename: 'index.html'
}),
그리고 다음 html 파일을 생성합니다.
<!doctype html>
<html lang="en">
<head>
...
<link href="main-295c5189923694ec44ac.min.css" rel="stylesheet">
</head>
<body>
<div id="app"></div>
<script src="main-295c5189923694ec44ac.min.js"></script>
</body>
</html>
이것은 앱의 루트를 방문 할 때 잘 작동 localhost:3000/
하지만 localhost:3000/items/1
번들 파일에 절대 경로가 삽입되지 않았기 때문에 다른 URL에서 앱을 방문하려고하면 실패 합니다. html 파일이로드되면 /items
react-router가 아직로드되지 않았기 때문에 존재하지 않는 디렉토리 에서 js 파일을 찾습니다 .
HtmlWebpackPlugin이 절대 경로로 파일을 주입하도록하려면 어떻게해야하나요? Express는 내 /dist
디렉토리가 아닌 루트에서 파일을 찾습니다 /dist/items/main-...min.js
. 아니면 문제를 해결하기 위해 Express 서버를 변경할 수 있습니까?
app.use(express.static(__dirname + '/../dist'));
app.get('*', function response(req, res) {
res.sendFile(path.join(__dirname, '../dist/index.html'));
});
본질적으로, 나는 그저 라인을 얻을 필요가 있습니다.
<script src="main...js"></script>
소스의 시작 부분에 슬래시가 있습니다.
<script src="/main...js></script>
output.publicPath = '/'
가 해결책이었습니다.