parcel buildのビルド結果をgithub pagesで公開すると、jsファイルの読み込みが404で失敗する。
事象
index.html
、main.js
、word.js
の3つのファイルから構成されるフロントエンドアプリケーションがあるとします。
<!DOCTYPE html>
<body>
<div id="title"></div>
<div id="description"></div>
<script src="main.js"></script>
</body>
import Word from './word.js'
document.getElementById("title").innerHTML = Word.title
document.getElementById("description").innerHTML = Word.description
export default {
title: "Hello World",
description: "Parcelのテストです"
}
parcel build index.html
によりこのアプリケーションをビルドします (parcel-bundler v1.12.4)
$ parcel build index.html
⠹ Building index.html...
✨ Built in 36.94s.
dist/main.a0e33e9b.js 1.57 KB 1.08s
dist/main.a0e33e9b.js.map 735 B 17ms
dist/index.html 123 B 35.01s
Done in 60.34s.
ビルド結果であるdist
ディレクトリ配下をGitHubのparcel-sample
レポジトリのmaster
ブランチにプッシュ。parcel-sample
レポジトリをgithub pagesとして公開する設定をした後、所定のURL(https://nekotheshadow.github.io/parcel-sample
)にアクセスしたところ、index.html
は想定通り表示されるものの、jsファイルの読み込みがステータスコード404によって失敗する事象が発生しました。
原因と対策
公開URLを明示せずにビルドしたため、あらぬjsファイルを読み込もうとしたために起きた現象です。つまりparcel build
の際に公開URLを指定する--public-url
オプションを利用することにより問題は解決します (参考: https://parceljs.org/cli.html)
具体的には以下のように指定してビルドを実施します
$ parcel build index.html --public-url https://nekotheshadow.github.io/parcel-sample/
✨ Built in 30.23s.
dist/main.a0e33e9b.js 1.61 KB 1.19s
dist/main.a0e33e9b.js.map 735 B 6ms
dist/index.html 168 B 28.32s
Done in 50.77s
dist
配下のビルド結果を改めてparcel-sample
にプッシュし、https://nekotheshadow.github.io/parcel-sample
にアクセスすると、想定通り動作することが確認できました。
Chromeの開発者ツールでも、jsファイルの読み込みが正しくできていることがわかります。
参考
Author And Source
この問題について(parcel buildのビルド結果をgithub pagesで公開すると、jsファイルの読み込みが404で失敗する。), 我々は、より多くの情報をここで見つけました https://qiita.com/neko_the_shadow/items/2f3a6d8ef547cdf45592著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .