Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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/2/node.js/42.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
Javascript 如何部署通过Node/Express向IIS进行服务器调用的React应用程序?_Javascript_Node.js_Sql Server_Reactjs_Deployment - Fatal编程技术网

Javascript 如何部署通过Node/Express向IIS进行服务器调用的React应用程序?

Javascript 如何部署通过Node/Express向IIS进行服务器调用的React应用程序?,javascript,node.js,sql-server,reactjs,deployment,Javascript,Node.js,Sql Server,Reactjs,Deployment,我有一个React应用程序,它调用server.js文件——这些调用是使用查询从数据库获取数据的请求(我使用的是MSSQL) 这是我的server.js: var express = require('express'); var app = express(); var sql = require("mssql"); var cors = require('cors'); app.use(cors()) var database =    {     server: xx

我有一个React应用程序,它调用server.js文件——这些调用是使用查询从数据库获取数据的请求(我使用的是MSSQL)

这是我的server.js:

var express = require('express');
var app = express();
var sql = require("mssql");
var cors = require('cors');
app.use(cors())

var database =    {
    server: xxx,
    authentication: {
        type: 'default',
        options: {
            userName: ‘xxx’,
            password: ‘xxx’,
        },
    },
    options: {
        database: ‘xxx’,
        encrypt: false,
    },
}

app.get(‘/gettingInfo’, function(req, res)    {
    sql.connect(database, function(err)  {
        if (err)    {
            console.log("ERROR HERE")
            console.log(err);
        }

        var request = new sql.Request();  
    const finalRoomQuery = [query];

        request.query(finalRoomQuery, function(err, recordset)  {
            if (err)    {
                console.log(err);
            }
            res.send(recordset);
        });
    });
});


var server = app.listen(5000, function ()   {
    console.log('Server is running...');
});
getData = () => {
        if (this.mounted === true)   {
            fetch('http://localhost:5000/gettingInfo')
            .then(results => results.json())
            .then(results => this.setState({data: results}))
            .catch(err => console.error(err));
        }
    }
下面是我的一个组件的代码示例,该组件从my server.js检索数据:

var express = require('express');
var app = express();
var sql = require("mssql");
var cors = require('cors');
app.use(cors())

var database =    {
    server: xxx,
    authentication: {
        type: 'default',
        options: {
            userName: ‘xxx’,
            password: ‘xxx’,
        },
    },
    options: {
        database: ‘xxx’,
        encrypt: false,
    },
}

app.get(‘/gettingInfo’, function(req, res)    {
    sql.connect(database, function(err)  {
        if (err)    {
            console.log("ERROR HERE")
            console.log(err);
        }

        var request = new sql.Request();  
    const finalRoomQuery = [query];

        request.query(finalRoomQuery, function(err, recordset)  {
            if (err)    {
                console.log(err);
            }
            res.send(recordset);
        });
    });
});


var server = app.listen(5000, function ()   {
    console.log('Server is running...');
});
getData = () => {
        if (this.mounted === true)   {
            fetch('http://localhost:5000/gettingInfo')
            .then(results => results.json())
            .then(results => this.setState({data: results}))
            .catch(err => console.error(err));
        }
    }
当我在我的项目目录中运行
node server.js
,然后运行
npm start
时,我的react应用程序能够检索数据并适当地呈现它

我正在部署我的应用程序。我运行了
npm运行build
来构建应用程序,并将其部署到了IIS。这就是我遇到问题的地方——如果我的机器上没有运行localhost:5000(即如果没有输入
node server.js
),我的应用程序无法查询所需的数据,我会得到一个(失败的)net::ERR\u连接。但是,当我运行localhost:5000时,IIS上的应用程序将按预期运行


我的问题是:我如何也托管这个server.js文件,和/或如何配置这个项目,使应用程序不必运行localhost:5000才能正常工作?如果这是一个简单的修复,或者我缺少一些非常基本的东西,我很抱歉。这是我第一次使用Web开发。在您的服务器代码中,您并不是在所有情况下都返回响应

app.get(‘/gettingInfo’, function(req, res)    {
    sql.connect(database, function(err)  {
        if (err)    {
            console.log("ERROR HERE")
            console.log(err);
            return res.send("Error Message");
        }

        var request = new sql.Request();  
        const finalRoomQuery = [query];

        request.query(finalRoomQuery, function(err, recordset)  {
            if (err)    {
                console.log(err);
                return res.send("Error Message");
            }
            return res.send(recordset);
        });
    });
});

您需要使用PM2之类的流程管理器,并在该控制台中运行服务器。

嘿,穆罕默德,谢谢你的回复!我在想,这是唯一的问题吗?我这样问是因为我得到的错误是连接被拒绝,我不知道是否添加额外的res.send是唯一的修复方法。您是否在单个项目中同时使用react和node?如果是,请尝试查看代理,这通常不是一个好做法。请把项目分开,单独开始,穆罕默德,是的。这是一个前端和后端应用程序。如果我将它们分开,我是否必须在IIS上运行这两个项目(单独的网站)?要实现我想要的功能,下一步是什么?(服务器和网站都独立运行,应用程序可以自动获取数据)不,不是IIS,只需在本地运行Thread start/npm start,部署时,您可以在firebase上托管react应用程序,在heroku上为freehey Vijay托管nodejs应用程序,感谢您的回复。我想知道我是否仍然可以在IIS上托管这个?