系外行星

系外行星 查看完整档案

北京编辑北京大学  |  集成电路工程 编辑  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 个人简介什么都没有

个人动态

系外行星 提出了问题 · 2020-07-02

前后端分离的项目可以共用同一个端口吗

这个问题会不会有点傻,希望大佬莫嘲笑
因为前两天因为前后端分离的项目分别在两个端口设置nginx反代花费了过多时间的问题,前端react 后端express
所以我在想它俩有没有可能放在一个端口,这样就不存在跨域了吧?
那为啥还要折腾nginx代理呢?
(为什么没有实践去验证,因为部署花了好久的时间,经不起折腾了)
希望有经验的大佬能给予解答,不胜感激额

关注 3 回答 2

系外行星 回答了问题 · 2020-06-29

解决前端react后端express用了socket.io怎么设置nginx反代?

自己解决 玄学,在各种百度google加东西,最后我都不知道是加的哪一条语句不再报错了的,惭愧
遂把整个nginx.conf的配置放出来
以及测试了设置socket.io的时候加不加反斜杠/都可 只要 proxy_pass http://127.0.0.1:4000;4000后面不加反斜杠/就行(真的玄学,其实还是自己学艺不精暂时还不知道原理)

user  root;  
worker_processes  auto;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;  

    #keepalive_timeout  0;  
    keepalive_timeout  65;
  
  # http_proxy 设置
    client_max_body_size   10m;
    client_body_buffer_size   128k;
    proxy_connect_timeout   75;
    proxy_send_timeout   75;
    proxy_read_timeout   75;
    proxy_buffer_size   4k;
    proxy_buffers   4 32k;
    proxy_busy_buffers_size   64k;
    proxy_temp_file_write_size  64k;
 

   server 
{ 
  listen 80;
  server_name localhost; 
    
location /{
        root /www/wwwroot/react.com;
    }         
    
location  /api/ {
      proxy_pass http://localhost:4000/; 
} 
location /socket.io {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_pass http://127.0.0.1:4000;
    }

  }
}

关注 2 回答 3

系外行星 回答了问题 · 2020-06-28

解决请问这种异步action如何写mapDispatchToProps

自己解决,提的这个问题其实是某篇博客的一种写法,之前没有直接传action的情况,都是通过mapDispatchToProps 突然愣了 脑子也蒙了,连最基础的写法也不记得了
回归本质
还是这么写

const mapStateToProps=(state)=>{
  return {
      user:state.user,
  }
}
const mapDispatchToProps=(dispatch)=>{
  return {
      register:(user)=>dispatch(register(user)),
  }
}
export default  connect(mapStateToProps,mapDispatchToProps)(Register)
  

此贴完结

关注 2 回答 2

系外行星 提出了问题 · 2020-06-27

解决请问这种异步action如何写mapDispatchToProps

还是小白,问的问题如果太傻还请见谅
是这样的register是个异步action代码如下

// 异步请求注册action
export const register =(user)=>{
    return async dispatch => {
        // 发送异步ajax请求
        const response = await reqRegister({ username, password, type })
        const result = response.data 
        if (result.code === 0) {
        getMsgList(dispatch, result.data._id)
        // 分发成功的同步action
        dispatch(authSuccess(result.data)) 
        } else {
        //分发失败的同步action
        dispatch(errorMsg(result.msg))
    
        }
    }
}

注册组件中需要register这个action,为了代码统一想写成mapDispatchToProps的写法,但是一直报错,目前不会报错的代码如下

const mapStateToProps=(state)=>{
  return {
      user:state.user,
  }
}

export default  connect(mapStateToProps,{register})(Register)
  

希望路过的大佬能把register帮忙写成mapDispatchToProps的形式,不胜感激

关注 2 回答 2

系外行星 关注了用户 · 2020-06-23

然后去远足 @rhqyz

如果你觉得我说的不错,请点赞。

如果我解决了你的疑惑,请采纳。

尊重他人劳动成果,拒绝伸手党。

P.S. 其实我啥也不会 ^_^

关注 144

系外行星 提出了问题 · 2020-06-23

解决前端react后端express用了socket.io怎么设置nginx反代?

前后端分离,部署在同一服务器的两个端口
前端80 后端4000 我的服务器ip地址是49.232.150.231
在大佬们的建议和自己的理解下修改之后的状况如下,但是错误依然存在,望路过的大佬再次指点迷津

前端react socket代码

function initIO(dispatch, userid) {
    if(!io.socket) {
       io.socket = io('ws://49.232.150.231:80')  
      io.socket.on('receiveMsg', function (chatMsg) {
        if(userid===chatMsg.from || userid===chatMsg.to) {
          dispatch(receiveMsg(chatMsg, userid))
        }
      })
  
    }
  }

后端express socket代码

const {Chat} = require('../model/chat')
module.exports = function (server) {
  const io = require('socket.io')(server)

  // 监视客户端与服务器的连接
  io.on('connection', async function (socket) {
    console.log('有一个客户端连接上了服务器')

    // 绑定监听, 接收客户端发送的消息
    socket.on('sendMsg', async function ({from, to, content}) {
      // 处理数据(保存消息)
      const chat_id = [from, to].sort().join('_')// from_to或者to_from
      const create_time = Date.now()
      var chatMsg = await Chat.create({from,to,content,chat_id,create_time})
      io.emit('receiveMsg', chatMsg)
    })
  })

}

express端口的监听我是在bin文件夹下的www文件中,不是在socket文件中这样不知道会不会有问题

var port = normalizePort(process.env.PORT || '4000');
app.set('port', port);
var server = http.createServer(app);
server.listen(port);

目前的nginx反代设置如下

server 
{ 
  listen 80;
  server_name localhost; 
    
location /{
        root /www/wwwroot/react.com;
    }         
    
location  /api/ {
      proxy_pass http://localhost:4000/; 
} 

location /socket.io {
         proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_pass http://127.0.0.1:4000;
    }
    

}

静态资源请求都正常 只有socketio那一块有问题
可以收发消息但是是通过ajax轮询
websocket没有实现
报错图片如下:
image.png
已经折腾好几天了,希望有做过的前辈给予指导,不胜感激

关注 2 回答 3

系外行星 回答了问题 · 2020-05-18

解决react项目使用antd-mobile的Grid设置走马灯出错

自己解答~
是react版本的问题

关注 1 回答 1

系外行星 提出了问题 · 2020-05-18

解决react项目使用antd-mobile的Grid设置走马灯出错

 {this.state.isShow ? (
            <Grid
              data={this.emojis}
              columnNum={8}
              // carouselMaxRow={4}
              // isCarousel={true}
              //分页
              onClick={(item) => {
                this.setState({content: this.state.content + item.text})
              }}
            />

本意是给表情做滑动分页,注释掉的是设置走马灯的代码
加上就会报错,报错如下
image.png
是按照antd-mobile的官方文档写的
image.png
已经确定是设置跑马灯的错误,因为注释掉就不会报错,当然这就有违了分页的初衷。
希望大佬们帮忙解决,不胜感激。

关注 1 回答 1

系外行星 提出了问题 · 2020-03-27

解决mongoose查询findOne时不能同时查询两个属性吗?

最近刚学nodejs 现在正动手做一个多人博客
登录时用户输入邮箱和密码
后台用findOne查询的时候是不是不能同时查询email和password,
只能查询到email再去二次判断password是否相等?
未解决.png

如上图所示,这样写就会报错,如果findOne只写email 再用date.password去判断就不会报错,搜索无果,特来此提问,麻烦大家了。

关注 2 回答 1

系外行星 回答了问题 · 2020-03-25

解决express渲染页面后怎么几秒后跳转页面?

依旧用版主的send方法
res.send('<script>alert("用户名或密码错误,请重新登录"); setTimeout(function(){location.href="/newslist.html"},3000) </script>')

关注 6 回答 3

认证与成就

  • 获得 1 次点赞
  • 获得 5 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 5 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2019-12-23
个人主页被 271 人浏览