npm运行构建中断反应路由器

时间:2018-10-26 20:14:43

标签: reactjs apache npm deployment webserver

我目前正在从事React项目。我正在设置它以进行部署,因此使用“ npm run build”命令来构建它。

不幸的是,当我这样做并将/ build内容提供给apache网络服务器(在DigitalOcean或XAMPP本地服务器上)时,所有路由均无法正常工作,并引发404 not found错误。不过,首页工作正常,通过“ npm run start命令”运行该项目也是如此

我尝试过在线寻找解决方案,但还无法解决此问题。

1 个答案:

答案 0 :(得分:0)

想分享一下,以防将来有人碰到这个问题:

这是假设Ubuntu用作操作系统:

post from Reddit开始,我已经执行了某些步骤,我可以证明此方法可以使SPA通过正确的路由在Apache Web服务器中运行。

引用:

1)在apache2.conf中的etc/apache2/中,我将AllowOverride变成了All。我还在文件中添加了服务器名localhost。 (我不知何故跳过了最后一句话,但最后还是很好用)

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

2)在hosts.debian.tmpl中找到的/etc/cloud/templates文件中,我在文件中添加了127.0.0.1 <yourdomain.com>相似之处。

127.0.0.1 yourdomain.com

3)我跑了sudo a2enmod rewrite。然后,我通过service apache2 restart重新启动了apache服务器。这将打开mod_rewrite。

几乎在我的项目文件夹/var/www/html中,在我的index.html文件旁边,我创建了一个.htaccess文件,并添加了以下内容:

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

结束报价

假设您已经运行npm run build,然后将build文件夹中的所有内容复制到了公共目录,则应该可以。

当我第一次开始Web开发时,我真的不确定我是否正确配置了VirtualHost,因此通常要做的是首先创建一个虚拟的index.html,例如Hello World示例。当我确认可以在浏览器中看到Hello World时(这意味着我正确配置了VirtualHost),我将build文件夹的内容转储到虚拟index.html所在的位置。 / p>

希望现在对您的帮助与对我一样多!