在Github Pages上使用React:gh-pages包无法工作

18

问题

我正在尝试将我的React应用程序发布在Github Pages上。然而,我甚至无法将该应用程序部署到GitHub pages。

我的设置

我使用的是Windows 10机器上的Visual Studio Code。我使用create-react-app创建了我的React应用程序。我按照这个教程为我的应用程序设置Github Pages。这是我的package.json文件:

{
  "homepage": "https://MisturDust319.github.io/ign_code_foo",
  "name": "ign_code_foo",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "axios": "^0.18.0",
    "bootstrap": "^4.1.0",
    "gh-pages": "^1.1.0",
    "react": "^16.3.1",
    "react-dom": "^16.3.1",
    "react-scripts": "1.1.4",
    "reactstrap": "^5.0.0-beta.3"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject",
    "predeploy": "npm run build",
    "deploy:": "gh-pages -d build"
  },
  "devDependencies": {}
}

完整的源代码可以在这里获取。

我的工作内容

要进行部署,你只需要运行以下命令:

npm run deploy
然而,当我在Windows PowerShell、Git Bash和命令提示符中输入该命令时,只会出现几种“找不到命令”的变体。
作为回应,我从dev-dependencies中卸载了gh-pages并将其重新安装为普通依赖项。 然而并没有改变。此时,我已经尽尽所有我能想到的解决方案,而谷歌搜索只显示了那些没有在package.json中包含deploy命令的人的文章。

当你运行该命令时,它确切地表示什么? - Paul McLoughlin
bash: gh-pages: 命令未找到。 - MisturDust319
1
你确定 gh-pages 已经安装了还是只在你的 package.json 中?先尝试运行 npm install - Carlo
我曾经遇到过同样的问题,后来发现再次运行 npm install gh-pages --save-dev 就解决了。 - Fractaly
1
我也遇到了这个错误。我已经使用 --save-dev 标志多次安装了 gh-pages,并重新启动了终端,但它仍然无法识别这个命令。 - xiaodeaux
8个回答

20

您的链接页面未找到。 - Alexey Nikonov
1
你不应该全局安装在项目中引用的东西。这是所有“在我的机器上可以工作”的问题的根源,因为任何检出仓库的其他人都没有所有必要的依赖项来使用它。 - Eric Haynes

6
在运行部署之前,需要安装 gh-pages,请执行以下命令: npm install --save-dev gh-pages
然后运行 npm run deploy

1
他在 package.json 文件中有它。 - flppv

4

我不能够在这篇文章下添加评论,因为我的评分不够。但是你的package.json代码中有一个错误:

 "deploy:": "gh-pages -d build"

因为有一个额外的分号:,应该改为:
"deploy": "gh-pages -d build"

1

简要说明为什么会出现这个问题,然后提供解决方法。

在 package.json 文件中:

"devDependencies": {  
    "gh": "^2.8.6",  
    "pages": "0.0.16"  
  }    

当我们运行npm install gh pages —save-dev时,将创建它。
但是,在运行npm run deploy以部署项目时,它会检查package.json文件中的deploy脚本。

因为在package.json文件中

"scripts": {  
    "deploy": "gh-pages -d build",  
....}

提到了 gh-pages -d build 脚本。
它会尝试执行此操作,但如果您是 Mac 用户,在 npm run deploy 时可能会出现此错误。
sh: gh-pages: command not found
npm ERR! code ELIFECYCLE
npm ERR! syscall spawn
npm ERR! file sh
npm ERR! errno ENOENT
npm ERR! basic@0.1.0 deploy: `gh-pages -d build`
npm ERR! spawn ENOENT
npm ERR! 
npm ERR! Failed at the basic@0.1.0 deploy script.

这是因为gh-pages也需要全局安装。如果你运行npm install -g gh-pages --save-dev
与gh-pages安装相关的问题将得到解决。

0

我不得不在package.json文件中将私有属性设置为false。


0

我把项目复制到了错误的部分。在我的情况下,我的dependenciesscripts之上,我把两个脚本放在了dependencies部分,就像一笔钱一样。将它们移动到正确的位置解决了我的问题。

提示:确保您的脚本没有放错位置。


0

可能是路径问题,对于尝试使用cmd而不是*nix终端的Windows用户来说,这是一个常见情况。如果您还没有退出并重新进入cmd,请尝试这样做。之后,您应该确保它可以访问gh-pages包。

此外,您可能需要查看类似问题的答案。并确保您的git版本>= 1.9,因为要求中已经说明了。


0

很有可能您没有将git添加到您的Path变量中。

如果在CMD中运行git出现错误,则是此问题的原因。

git.exe和其他二进制文件添加到您的路径中,通常是C:\Program Files\Git\bin,然后再次尝试运行gh-pages -d build


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接