我安装使用razzle和反应的简单应用。它完美的作品我的本地机器,甚至生产版本上。当我尝试部署的应用天青我遇到错误500.我查了日志和应用程序确实启动,但服务器永远达不到(“/”路线)。
我想这web.config文件,并用一个简单的快速应用程序测试,它的伟大工程,但它并没有为我工作。
这是我的server.js
const server = express();
server
.disable('x-powered-by')
.use(express.static(process.env.RAZZLE_PUBLIC_DIR))
.get('/*', (req, res) => {
console.log("This should trigger")
这是index.js
import http from 'http';
let app = require('./server').default;
const server = http.createServer(app);
let currentApp = app;
server.listen(process.env.PORT || 3000, error => {
if (error) {
console.log(error);
}
console.log('🚀 started in port ', process.env.PORT || 3000);
});
此代码编译成一个单一的server.js文件(这是我在我的web.config文件已经指向)
我检查日志,这行出现在日志
console.log('🚀 started in port ', process.env.PORT || 3000);
但没有这一项
console.log("This should trigger")
无论任何内容或来自服务器的响应。
希望你能有所帮助。这是推动我坚果。
我试图按照GitHub库jaredpalmer/razzle
的README构建和运行简单的项目my-app
,然后发现了这个命令npm run build
将编译process.env.PORT || 3000
的代码src/index.js
的价值为build/server.js
如下图所示。
注:如果我将通过命令PORT
值5000
在Windows或set PORT=5000
在Linux上export PORT=5000
环境端口,该端口"3000"
以上build/server.js
将代替"5000"
,不process.env.PORT
代码。
然而,运行在Azure上的WebApp使Node.js应用程序,你必须使用process.env.PORT
来读取环境变量PORT
的端口,然后和build
中的所有文件的web.config
上传文件到Azure中要使用PORT
环境价值的应用变量由Web应用程序设置工作。
因此,要解决这个问题,需要通过搜索"3000"
或process.env.PORT
环境的价值"3000"
手动更换PORT
,如下图所示,然后做了部署。