在windows下导入react项目并且打包编译后部署到nginx上

最近接手了公司的一个django项目,这是应该前后端分离的项目,前端使用react编写,由于之前没用过react,所以在配置时遇到了一些问题,现在记录下来。

一、安装npm

安装nodejs就行了,网上都有教程,这里贴一个比较详细的nodejs安装

注意node_globalnoe_cache这两个文件夹可以不用像他那样配置。

然后参照上面那篇文章配置镜像站,输入命令

npm config set registry=http://registry.npm.taobao.org

注意此时我们的npm版本不是最新版,运行时可能会报警告,输入命令

npm install npm -g

将npm升级到最新版。

nodejsnpm如果版本有差异的话,后续安装库时可能会被报错,可以参照nodejs和npm版本对应
来查看nodejs对应的版本。

二、创建react项目

这个也不多说,这里贴一个我认为比较详细的搭建react项目
注意再创建完react项目后要先进入项目的根目录再进行后续操作。
先不要急着打包,因为我到手的只有一个src文件夹,所以还需要再配置一下文件,如果你收到的也是一个src文件,可以跟着我的流程走。
我的src文件夹目录如下
进入Components目录,这里有一个Init.js文件,如图

其他全是我的app文件。
打开Init.js文件

注意,后续使用python manage.py runserver启动django项目时,后面要跟着你现在配置的ip和端口号,如python manage.py runserver 192.168.149.1:4256。
修改完src文件夹后,自己拖到你创建的react项目,覆盖原文件。注意在做这些操作前请备份自己的文件,无论是你自己创建的react项目,还是src文件夹,都尽量进行备份。
如果你的js文件在引用其他文件路径时里面有个@字符,如图

找到react项目的根目录下的config文件夹,打开webpack…config.js文件,如果没有这个文件,请在项目根目录下运行npm run eject命令。

npm run eject

如果遇到下面的错误,这是因为我们用脚手架创建一个项目时,脚手架自动给我们增加了一个 .gitignore 文件,而我们本地却没有文件仓库。

在终端输入命令

git add .
git commit -m "up"

重新输入命令就可以了。

npm run eject


找到resolve->alias,添加

'@': path.resolve(__dirname,'../src')

如图

在项目根目录下执行命令,查看项目是否能够运行成功

npm start

如遇报错信息为 Module not found: Error: Can’t resolve ‘xxx’
使用命令安装缺失的依赖包即可

npm i -S xxx

我在运行后还出现了这种报错,如图

解决方法为卸载新版本,再安装5的版本

npm uninstall react-router-dom
npm install react-router-dom@5

至此,项目就能够成功运行了。

三、安装nginx

不多说,参考nginx安装
安装成功后目录如下

打包编译你的react项目,执行命令

npm run build

打包成功后如图

编译成功后在项目根目录出现build文件夹

build文件夹里的内容

将build文件夹下的全部文件复制到nginx目录下的html,建议将html里面的文件全部删除再复制进去,如果不放心可以备份一份html文件。
然后找到nginx目录下的conf文件夹,找到nginx.conf

打开,修改配置

粘一份我的配置


#user nobody;
worker_processes 1; #error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; #pid logs/nginx.pid; events {
worker_connections 1024;
} http { include mime.types;
default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on;
#tcp_nopush on; #keepalive_timeout 0;
keepalive_timeout 65; #gzip on; server {
listen 3000;
server_name localhost;
# port_in_redirect off; #charset koi8-r; #access_log logs/host.access.log main; location / {
root html;
index index.html index.htm;
# proxy_pass http://127.0.0.1:8000/;
try_files $uri /index.html;
} # location /django/ {
# proxy_pass http://192.168.149.1:4256/
# proxy_set_host HOST 127.0.0.1
# }
#error_page 404 /404.html; # redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
} # proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#} # deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
} # another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias; # location / {
# root html;
# index index.html index.htm;
# }
#} # HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost; # ssl_certificate cert.pem;
# ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on; # location / {
# root html;
# index index.html index.htm;
# }
#} }

cmd进入nginx目录,启动nginx

start nginx

浏览器输入localhost:3000即可访问前端
如果是部署在服务器里的话需要将server更改为域名地址或者服务器ip地址,
输入域名或者服务器ip即可访问。
每次更改配置文件后都需要重启nginx

nginx -s reload

如果发现修改后重启nginx并没有更新自己修改的配置,可以杀死全部的nginx再开启nginx。

taskkill /f /t /im nginx.exe

四、总结

配置这个项目花了两个星期的时间,期间遇到不少坑,不过也学到很多新东西,想想果然还是对react框架不太了解,准备抽空来学习一下。

在windows下导入react项目并且打包编译后部署到nginx上的更多相关文章

  1. vue项目中打包编译后,CSS样式【-webkit-box-orient: vertical】打包后丢失问题

    最近在做vue项目的时候页面处理多行文本样式时用到了-webkit-box-orient: vertical这个属性,本地跑项目没问题,但是打包放到服务器后发现这个属性丢失了.如下图: 后来在网上查了 ...

  2. react-native —— 在Windows下搭建React Native Android开发环境

    在Windows下搭建React Native Android开发环境 前段时间在开发者头条收藏了 @天地之灵_邓鋆 分享的<在Windows下搭建React Native Android开发环 ...

  3. windows下安装node.js及环境配置、部署项目

    windows下安装node.js及环境配置.部署项目 一.总结 一句话总结: 安装nodejs软件:就像普普通通的的软件那样安装 配置nodejs安装的全局模块的环境变量 并且安装cnpm(比如cn ...

  4. Windows下为 Eclipse 配置 C/C++ 编译环境(转)

    1.Eclipse及CDT的安装 CDT的全称是C/C++ DevelopmentTools,CDT使得Eclipse能够支持C/C++的开发.直接下载 eclipse CDT 集成版 下载地址:ht ...

  5. windows下多个python版本共存,如何在Windows7系统上安装最新的64位Python3.6.2

    windows下多个python版本共存,如何在Windows7系统上安装最新的64位Python3.6.2 1.官网下载python3.6.2https://www.python.org/ftp/p ...

  6. windows下使用mingw和msvc静态编译Qt5.15.xx

    windows下使用mingw和msvc静态编译Qt5.15.xx 下载并安装相关依赖软件 Python version 2.7 https://www.python.org/downloads/ ( ...

  7. 【转】在Windows下搭建React Native Android开发环境

    http://www.jianshu.com/p/2fdc4655ddf8 安装JDK 从Java官网下载JDK并安装.请注意选择x86还是x64版本. 推荐将JDK的bin目录加入系统PATH环境变 ...

  8. React项目的打包与部署到腾讯云

    腾讯云送了30天的免费试用,于是有了把react项目部署到上面的想法.项目是默认生成的,只是一个页面,但是这个过程中也遇到了不少麻烦与问题.下面来具体梳理下: create-react-app 来自F ...

  9. 手把手教你在Windows下搭建React Native Android开发环境

    最近看到React Native好像好厉害的样子,好奇心驱使之下体验了一下并将在Window下搭建React Natvie Android环境的步骤记录下来,并有需要的朋友参考.(我都是参考官方文档的 ...

  10. hadoop-eclipse插件编译及windows下运行wordcount项目

    参考文章:http://www.360doc.com/content/16/0227/18/10529016_537828949.shtml, 配置修改:http://blog.csdn.net/lo ...

随机推荐

  1. 安装 CRI 客户端 crictl

    # https://github.com/kubernetes-sigs/cri-tools/releases/ 选择版本 wget https://github.com/kubernetes-sig ...

  2. Elastic:使用ElastAlert发送通知

    ElastAlert是一个简单的框架,用于从Elasticsearch中的数据中发出异常,尖峰或其他感兴趣模式的警报.我们可以在地址https://elastalert.readthedocs.io/ ...

  3. kubeoperator升级步骤

    当前kubeoperator版本是3.6.0 官方文档:https://kubeoperator.io/docs/installation/install/ # 离线升级需要提前下载离线安装包,并解压 ...

  4. Elasticsearch索引和查询性能调优的21条建议

    Elasticsearch部署建议 1. 选择合理的硬件配置:尽可能使用 SSD Elasticsearch 最大的瓶颈往往是磁盘读写性能,尤其是随机读取性能.使用SSD(PCI-E接口SSD卡/SA ...

  5. PR中导入的照片在画面上只显示一部分的解决办法

    这是因为图片的分辨率太大导致的. 1.图片的分辨率大于PR工程的设置的时候,就会只显示局部. 2.可以用PS把图片先缩小为工程大小即可. 3.也可以把图片拖到时间线上,右键点击,缩放为帧大小即可. 这 ...

  6. 报错 Invalid options in vue.config.js: "baseUrl" is not allowed 问题解决

    报错 Invalid options in vue.config.js: "baseUrl" is not allowed vue3.0版本中 执行 npm run build会出 ...

  7. js读取excel进行批量操作

    推荐这款插件 http://oss.sheetjs.com/js-xls/ 具体用法大家查看api! <!DOCTYPE html> <html> <head> & ...

  8. js红宝书学习笔记(一)引用类型

    一.引用类型 ECMAScript中,引用类型是一种数据结构称之为对象定义,,引用对象不同于传统面向对象语言所支持的类和接口等基本结构 创建Object 实例的两种方式: new操作符跟Object构 ...

  9. 畸变矫正、透视变换加速(OpenCV C++)

    前两周,同事和我说检测时间超时,其中对图像做畸变矫正和投影变换就要花费25ms(3000×3000的图).而此时我们已经用上了文章opencv图像畸变矫正加速.透视变换加速方法总结中的方法.突然我想到 ...

  10. 第二阶段:高级核心基础知识·第1章Linux三剑客·1

    1.用vmware添加一块10G的硬盘,且永久挂载到/data01中,写出详细的步骤 2.用自己语言描述raid0和raid1的区别 RAID 0: 将两个或以上相同信号,容量的硬盘组合,磁盘阵列的总 ...