[英]Azure cli command for deploying react.js code to node Azure App Service
[英]Unable to connect Node.js app to React.js app while deploying on Azure
我正在尝试在Azure上部署MERN应用程序(React.js作为客户端,Node.js作为服务器)。 我创建了一个Cosmos数据库帐户和数据库(MongoDB),并将Node.js应用程序连接到该数据库。
我无法在Node.js和React.js应用之间创建通信。
我已经创建了React.js应用程序的构建并粘贴到Node.js应用程序中并部署了Node.js应用程序。
我有问题
'不能获取/'
我还尝试通过在以下结构中将整个React.js应用程序粘贴到Node.js应用程序中来手动部署该应用程序-
|- node-app
|- client
|- react-app
|- node-app rest files...
我不知道如何在生产中获取环境变量
我的app.js如下-
require('dotenv').config();
require('./config/database.config');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(express.static(path.join(__dirname, 'build')));
app.get('*', (req,res) =>{
res.sendFile(path.join(__dirname+'/build/index.html'));
});
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
我的数据库配置文件如下-
var mongoose = require('mongoose');
mongoose.connect(
process.env.DB_CONN,
{
auth :{user : process.env.DB_USER, password : process.env.DB_PW},
useNewUrlParser: true
})
.then(() => {
console.log("Successfully connected to the database");
}).catch(err => {
console.log('Could not connect to the database. Exiting now...', err);
process.exit();
});
根据我的经验,我认为您的问题是由您的代码app.use(express.static(path.join(__dirname, 'build')));
服务于由npm run build
的React客户端的静态文件。
在Azure上,本地变量和Azure变量__dirname有所不同。 在本地,__ dirname变量的值始终是启动节点进程的完整路径名,例如,如果在CMD中以D:\\ home运行节点,则print __dirname将返回D:\\ home。 但是在Azure上,您将在任何路径中看到__dirname值。 如果您尝试运行命令节点-e“ const path = require('path'); console.log(__ dirname);” 在Kudu控制台中,如下图所示。
因此,始终build
path.join(__dirname, 'build')
值,该值与IIS启动的节点的当前路径无关。 因此,要解决这个问题,请使用像一个绝对路径D:\\home\\site\\wwwroot
代替__dirname
可变path.join
方法或者直接使用D:\\home\\site\\wwwroot\\build
在express.static
方法。
如有任何疑问,请随时告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.