Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Heroku部署的MERN应用程序,仅显示;“未找到”;_Node.js_Reactjs_Express_Heroku_Mern - Fatal编程技术网

Node.js Heroku部署的MERN应用程序,仅显示;“未找到”;

Node.js Heroku部署的MERN应用程序,仅显示;“未找到”;,node.js,reactjs,express,heroku,mern,Node.js,Reactjs,Express,Heroku,Mern,我已经编写了一个MERN应用程序,它在本地工作并推送到heroku,但当我转到heroku应用程序链接时,它只显示“未找到”。我已经检查了我的package.json构建脚本,并添加了express route来服务静态文件,但得到了相同的结果。客户机文件夹位于根/后端文件夹中,由create-react-app创建。这是我的server.js: const express = require('express'); const path = require('path'); const mon

我已经编写了一个MERN应用程序,它在本地工作并推送到heroku,但当我转到heroku应用程序链接时,它只显示“未找到”。我已经检查了我的package.json构建脚本,并添加了express route来服务静态文件,但得到了相同的结果。客户机文件夹位于根/后端文件夹中,由create-react-app创建。这是我的server.js:

const express = require('express');
const path = require('path');
const mongoose = require('mongoose');
const socketio = require('socket.io');
require('dotenv').config();

const jwt = require('jsonwebtoken');
const bodyParser = require('body-parser');
const cors = require('cors');
const expressSession = require('express-session');

const commentroutes = require('./routes/commentRoutes');
const postRoutes = require('./routes/postRoutes');
const userRoutes = require('./routes/userRoutes');
const messageRoutes = require('./routes/messageRoutes');
const searchRoutes = require('./routes/searchRoutes');
const statusRoutes = require('./routes/statusRoutes');

const User = require('./models/user');
const PrivateMessage = require('./models/privateMessage');

const app = express();

app.use(cors());

// parse application/x-www-form-urlencoded
app.use(bodyParser.json());

app.use(
  expressSession({
    secret: process.env.SECRET || 'local development secret',
    saveUninitialized: false,
    resave: false
  })
);

// ##### ROUTES #####
app.use('/user', userRoutes);

app.use('/post', postRoutes);

app.use('/comment', commentroutes);

app.use('/message', messageRoutes);

app.use('/search', searchRoutes);

app.use('/status', statusRoutes);

let onlineUsers = {};

if (process.env.NODE_ENV === 'production') {
  //set static folder
  app.use(express.static('client/build'));
}
app.get('*', (req, res) => {
  res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
});

mongoose
  .connect(process.env.MONGO_URI, { useNewUrlParser: true })
  .then(res => {
    const expressServer = app.listen(process.env.PORT || 8000);
    console.log('listening on port 8000');

    // BEGIN SOCKET IO:
    const io = socketio(expressServer);
    io.on('connection', socket => {
      console.log('online users: ', onlineUsers, 'new user: ', socket.id);
      const setUpCurrentChatUser = async () => {
        const token = socket.handshake.query.token;
        if (!token) {
          console.log('no token auth denied');
        } else {
          try {
            const decoded = jwt.verify(token, process.env.SECRET);
            // console.log('DECODED: ', decoded);
            let current_time = Date.now() / 1000;
            if (decoded.exp < current_time) {
              console.log('expired');

              // token is expired, not authorized
            } else {
              let decodedUser = await User.findOne({
                _id: decoded.tokenUser.userId
              });
              const currentUser = {
                userId: decodedUser._id,
                socketId: socket.id
              };
              onlineUsers = addUser(onlineUsers, currentUser);

              const currentUserFriendList = decodedUser.friendList;

              const modifiedFriendList = currentUserFriendList.map(friend => {
                if (friend in onlineUsers) {
                  const newFriend = {
                    friendId: friend,
                    isOnline: true,
                    socketId: onlineUsers[friend].socketId
                  };
                  return newFriend;
                } else if (!(friend in onlineUsers)) {
                  const newFriend = {
                    friendId: friend,
                    isOnline: false,
                    socketId: null
                  };
                  return newFriend;
                }
              });

              socket.emit('friendList', modifiedFriendList);
            }
          } catch (error) {
            console.log('jwt error ');
          }
        }
      };

      setUpCurrentChatUser();

      const addUser = (userList, user) => {
        let newList = Object.assign({}, userList);
        newList[user.userId] = user;
        return newList;
      };

      socket.on('newPrivateMessageFromClient', async message => {
        console.log('newPrivateMessageFromClient: ', message);

        const friendId = message.currentFriend.friendId;
        const friendSocketId = onlineUsers[friendId].socketId;

        const newPrivateMessage = new PrivateMessage({
          sender: message.senderId,
          recipient: message.currentFriend.friendId,
          participants: [message.senderId, message.currentFriend.friendId],
          content: message.message
        });
        newPrivateMessage.save().then(result => {
          console.log('newPrivateMessage: ', result);

          //to friend
          io.to(`${friendSocketId}`).emit('privateMessageFromServer', result);

          //to sender
          const userSocketId = onlineUsers[message.senderId].socketId;
          console.log('USER SOCKET ID: ', userSocketId);
          io.to(`${userSocketId}`).emit('ownPrivateMessageFromServer', result);
        });
      });

      socket.on('updateFriendList', async friendList => {
        const modifiedFriendList = friendList.map(friend => {
          if (friend in onlineUsers) {
            const newFriend = {
              friendId: friend,
              isOnline: true,
              socketId: onlineUsers[friend].socketId
            };
            return newFriend;
          } else if (!(friend in onlineUsers)) {
            const newFriend = {
              friendId: friend,
              isOnline: false,
              socketId: null
            };
            return newFriend;
          }
        });

        socket.emit('friendList', modifiedFriendList);
      });

      socket.on('disconnect', async socketId => {
        try {
          const token = socket.handshake.query.token;
          const decoded = jwt.verify(token, 'speakfriendandenter');
          const userId = decoded.tokenUser.userId;
          console.log(
            'DISCONNECT, socket id: ',
            socketId,
            'decoded.tokenUser.userId: ',
            decoded.tokenUser.userId
          );
          delete onlineUsers[userId];
          console.log('updated online users after disconnect: ', onlineUsers);
        } catch (err) {
          console.log(err);
        }
      });
    });
  })
  .catch(err => console.log(err));


将其更改回
index.js
,然后尝试以下操作:

app.get('*', (request, response) => {

response.sendFile(path.join(__dirname, 'client/build', 'index.html'));

 });

});

将其更改回
index.js
,然后尝试以下操作:

app.get('*', (request, response) => {

response.sendFile(path.join(__dirname, 'client/build', 'index.html'));

 });

});

在构建它之后,它会给出任何错误吗?不会,当我推它时,它会成功构建。上面写着:远程:-->构建成功!远程:-->发现进程类型远程:Procfile声明类型->(无)远程:buildpack的默认类型->web远程:远程:-->压缩。。。远程:完成:37.3M远程:-->启动。。。remote:发布v13 remote:deployed to heroku尝试将包中的
“main”:“index.js”
更改为
“main”:“server.js”
,重新生成并重新部署。我更改为“main”:“server.js”,并推送到heroku master,但它仍然只显示“Not Found”(未找到),在构建后是否出现任何错误?否,当我推它时,它成功构建。上面写着:远程:-->构建成功!远程:-->发现进程类型远程:Procfile声明类型->(无)远程:buildpack的默认类型->web远程:远程:-->压缩。。。远程:完成:37.3M远程:-->启动。。。remote:发布v13 remote:deployed to Herokutry将您的
“main”:“index.js”
更改为
“main”:“server.js”
,重新生成并重新部署。我更改为“main”:“server.js”,并推送到heroku master,但当我添加以下内容时,它仍然只显示“未找到”:“errno”:-2,“code”:“enoint”,“syscall”:“stat”,“path”:“/app/client/build/index.html”,“expose”:false,“statusCode”:404,“status”:404}同样,当我使用“git commit”时,现在我得到了“未为提交准备的更改:modified:client(修改的内容,未跟踪的内容)“但其他变化似乎已被成功跟踪/添加/提交/pushed@rollerpigeon好的,摆脱它,尝试上面的方法,把前两个变量放在上面,然后尝试上面的最后一部分。我创建了新文件夹,复制了文件,删除了.git文件,并用git init重新初始化了它。我注意到上传大小从37MB增加到70MB以上,我想是因为我的客户端文件夹中有一个.git文件,它没有被推送或跟踪,因为它没有作为子模块添加。不过我不太确定。感谢您的帮助,我无法表达看到这件事部署的满足感。当我补充说我得到了这个:{“errno”:-2,“code”:“enoint”,“syscall”:“stat”,“path”:“/app/client/build/index.html”,“expose”:false,“statusCode”:404,“status”:404}当我现在使用“git commit”时,我也得到了未为提交暂存的更改:已修改:客户端(已修改的内容、未跟踪的内容)“但其他变化似乎已被成功跟踪/添加/提交/pushed@rollerpigeon好的,摆脱它,尝试上面的方法,把前两个变量放在上面,然后尝试上面的最后一部分。我创建了新文件夹,复制了文件,删除了.git文件,并用git init重新初始化了它。我注意到上传大小从37MB增加到70MB以上,我想是因为我的客户端文件夹中有一个.git文件,它没有被推送或跟踪,因为它没有作为子模块添加。不过我不太确定。谢谢你的帮助,我无法表达看到这个东西部署的满足感。