create-react-app npm run build 命令

IT技术 reactjs build npm create-react-app
2021-03-27 02:03:07

我使用create-react-app构建了一个小型 React 应用程序,运行npm start. 到此为止。

但是,当我运行时npm run build,该过程似乎正确执行(创建构建文件夹,其中包含捆绑的 js 文件和 index.html 文件),但是当我在浏览器中打开 index.html 时,它什么也不呈现。我错过了什么?


旁白:我也尝试将它上传到远程服务器,当我转到 URL 时,浏览器返回了......

禁止:您无权访问 / 在此服务器上。

...如果有人知道如何解决这个问题,我也会很感激。

6个回答

但是,当我运行 npm run build 时,该进程似乎正确执行(创建 build 文件夹,其中包含捆绑的 js 文件和 html.index 文件),但是当我在浏览器中打开 index.html 时,它什么也没呈现。我错过了什么?

运行时npm run build,它会打印相关说明:

在此处输入图片说明

您不能打开,index.html因为它应该与静态文件服务器一起提供
这是因为大多数 React 应用程序使用客户端路由,而您不能使用file://URL来做到这一点

在生产中,您可以使用 Nginx、Apache、Node(例如 Express)或任何其他服务器来为静态资产提供服务。只要确保如果您使用客户端路由,您可以index.html为任何未知请求提供服务,例如/*,而不仅仅是/

在开发中,您可以pushstate-server为此使用它适用于客户端路由。这正是印刷说明建议您执行的操作。

我还尝试将其上传到远程服务器,当我转到 URL 时,浏览器返回禁止:您无权访问 / 在此服务器上。

您需要上传build文件夹的内容,而不是build文件夹本身。否则服务器找不到你的,index.html因为它在里面build/index.html,所以它失败了。如果您的服务器未检测到顶级index.html,请参阅您服务器的文档以了解默认情况下提供的文件的配置。

是的。或者,您可以将构建文件夹复制到您有权访问的任何远程服务器,并配置任何静态服务器软件来为其提供服务。
2021-06-02 02:03:07
好,谢谢。我听说过 Heroku - blog.heroku.com/deploying-react-with-zero-configuration - 我将阅读它,但这是部署实时(非本地)反应应用程序的一种方式吗?远程服务器?
2021-06-05 02:03:07
对我有用!简短回答:相信您从 中看到的说明npm run build
2021-06-13 02:03:07

你不能通过点击 index.html 来运行生产版本,你必须像下面这样修改你的脚本。

"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "deploy": "serve -s build"
  }

运行 npm run-script build 后,运行 npm run-script deploy,你会得到这样的东西,这是你可以加载生产构建的地方。

npm install -g serve 在运行 npm run-script deploy 之前。

在此处输入图片说明

在这里,您可以通过 2 种可能的方式解决此问题。

1.将路由历史改为“hashHistory”而不是browserHistory

 <Router history={hashHistory} >
   <Route path="/home" component={Home} />
   <Route path="/aboutus" component={AboutUs} />
 </Router>

现在使用命令构建应用程序

sudo npm run build

然后将 build 文件夹放在您的 var/www/ 文件夹中,现在应用程序工作正常,在每个 url 中添加 # 标签。喜欢

本地主机/#/home 本地主机/#/aboutus

解决方案 2:不使用浏览器历史记录的 # 标签,

在您的路由器中设置您的历史记录 = {browserHistory},现在使用 sudo npm run build 构建它。

您需要创建“conf”文件来解决404 not found页面,conf文件应该是这样的。

打开你的终端输入以下命令

cd /etc/apache2/sites-available ls nano sample.conf 加入如下内容。

 <VirtualHost *:80>
    ServerAdmin admin@0.0.0.0
    ServerName 0.0.0.0
    ServerAlias 0.0.0.0
    DocumentRoot /var/www/html/

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory "/var/www/html/">
            Options Indexes FollowSymLinks
            AllowOverride all
            Require all granted
    </Directory>
</VirtualHost>

现在您需要使用以下命令启用 sample.conf 文件

cd /etc/apache2/sites-available
sudo a2ensite sample.conf

然后它会要求你重新加载 apache 服务器,使用 sudo service apache2 reload 或 restart

然后打开您的 localhost/build 文件夹并添加具有以下内容的 .htaccess 文件。

   RewriteEngine On
   RewriteBase /
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-l
   RewriteRule ^.*$ / [L,QSA]

现在该应用程序正常运行。

注意:将 0.0.0.0 ip 更改为您的本地 IP 地址。

我希望它对其他人有帮助。

打开 index.html 文件。滚动接近尾声,你会看到

<script src="/static/js/2.b5125f99.chunk.js"></script><script src="/static/js/main.fcdfb32d.chunk.js"></script></body></html>

只需在两个 src 属性前添加一个点:

<script src="./static/js/2.b5125f99.chunk.js"></script><script src="./static/js/main.fcdfb32d.chunk.js"></script></body></html>

此外,如果您有任何样式,您还必须在开头附近滚动,您将看到:

<link href="/static/css/main.1eabf3ab.chunk.css" rel="stylesheet">

并在 href 属性前放置一个点

<link href="./static/css/main.1eabf3ab.chunk.css" rel="stylesheet">

注意:文件名可能/不会与您相同

也一定要在使用服务器时把它改回来,或者再次运行 npm run build (我不知道如果你不这样做会发生什么)

通过create-react-app构建应用create-react-app 程序后

运行命令npm run build在那之后运行命令npm install -g serve& 最后serve -s build

可以从这里找到更多详细信息create-react-app-deployment