由于我花了两个小时来解决这个问题,而且我必须从多个来源和解决方案中获取这些信息,因此我决定再花一个小时在这里写这篇文章,以供未来面临相同问题的其他部署者 (!) 使用。
为了提供上下文,对于每个帐户,GitHub 允许在 GitHub Pages 上免费托管 1 个个人静态网页和多个静态项目网页。要使用此功能,您必须{github-username}.github.io
将个人页面和{github-username}.github.io/{project-name}
要部署到 GitHub 页面的任何项目的存储库名称更改为。
此问题和答案仅与个人页面有关,但也可能为调试项目页面提供一些见解。npm
可以在网上找到用于部署 React 项目的教程(例如,请参阅这篇文章)。
为了解决卡顿问题,有人建议你将deploy命令改为如下:
"scripts": {
...
"predeploy": "npm run build",
"deploy": "gh-pages -b master -d build"
},
添加-b master
指定您的项目将部署到的分支。这有助于避免终端冻结,并且您的代码实际上是通过 部署和访问的www.{github-username}.github.io/
,但所有构建文件信息都将提交并推送到主分支。
我想做的是将源项目放在主分支上,并将部署的网站放在不同的构建分支上。而且,我不希望 URL 也包含分支名称。
我尝试更改-b master
为-b {deploy-branch=name}
,例如,我要将网站部署到的分支名称-b gh-pages
在哪里gh-pages
。这导致运行npm run deploy
再次冻结!
为了解决这个问题,我不得不手动创建一个远程分支,gh-pages
再次调用并运行部署命令。
- 为了确保从
gh-pages
分支加载 GitHub 页面,我必须转到我的 GitHub 存储库 > 设置 > GitHub 页面并将分支更改为gh-pages
(见下图)。

在第 2 步之后,我的网站已启动并运行,可以通过www.{github-username}.github.io/
.
您也可以继续将您的项目提交推送到分支 master。当然,这样做不会影响您的构建和 GitHub 个人页面。
- 最后一个问题是避免使用
CTRL+C
终止无响应终端后出现“Branch gh-pages already exists”错误。
解决方案是删除缓存,但从 3.1 版开始gh-pages node_module
,他们将缓存移到了不同的路径。所以而不是:
rm -rf node_modules/gh-pages/.cache
, 我用了:
rm -rf node_modules/.cache/gh-pages
以避免错误(感谢尼古拉斯的评论)。
我希望这也能帮助其他人:)