javascript - 无法运行 Node JS 部署到 Azure

标签 javascript node.js azure

我遵循了本教程:

https://learn.microsoft.com/en-us/azure/app-service/app-service-web-get-started-nodejs

我已经使用“Zip Deploy”工具部署了 Express JS 应用程序:

https://[app_name_here].scm.azurewebsites.net/ZipDeploy

当我尝试调用公共(public) API 时,不断收到错误消息“您正在查找的资源已被删除、名称已更改或暂时不可用。

奇怪的是,我的 Express JS 应用程序在本地运行得很好。我已尝试多次更改我的index.js以正确公开我的API路由,但在Azure上似乎没有任何效果。这是我当前的代码。

这确实有点无组织/困惑,因为我一直在合并来自 3 个不同 Express 应用程序的逻辑。

...

index.js

var express = require('express');
var cors = require('cors');
var bodyParser = require('body-parser');
var app = express();
var cookieParser = require('cookie-parser');
var path = require('path');
app.use(cors({ origin:'*' }));
app.set('port', (process.env.PORT || 5000));
app.use(bodyParser.json());

var indexRouter = require('./routes/index');
app.set('views', path.join(__dirname, 'views'));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);

//Router imports
var chainCoreDevRoutes = require('./routes/chainCoreDevRoutes');
var mongoDevRoutes = require('./routes/mongoDevRoutes');
var stuffMartServiceRoutes = require('./routes/stuffMartServiceRoutes');
app.use('/dev/chainCore', chainCoreDevRoutes);
app.use('/dev/mongo', mongoDevRoutes);
app.use('/api', stuffMartServiceRoutes);

//app.get('*', function(request, response) { response.sendFile(path.join(__dirname, 'public/index.html')); });

app.listen(app.get('port'), function() {
  console.log('Node app is running wubbalubba dub dub! on port', app.get('port'));
});

...

routes/index.js

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

module.exports = router;

...

web.config(Azure 环境所需)

<configuration>
    <system.webServer>

        <!-- indicates that the index.js file is a node.js application 
        to be handled by the iisnode module -->

        <handlers>
            <add name="iisnode" path="index.js" verb="*" modules="iisnode" />
        </handlers>

        <!-- adds index.js to the default document list to allow 
        URLs that only specify the application root location, 
        e.g. http://mysite.antarescloud.com/ -->

        <defaultDocument enabled="true">
            <files>
                <add value="index.js" />
            </files>
        </defaultDocument>

      </system.webServer>
</configuration> 

最佳答案

我的解决方案: 不要遵循教程/博客文章

我使用了 Visual Studio 2017,找到了一个名为“Basic Azure Node.js Express 4 App”的项目模板。基础项目运行顺利,只花了 5 分钟就完成了设置。

关于javascript - 无法运行 Node JS 部署到 Azure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50455841/

相关文章:

javascript - 等待 mocha runner 事件的异步函数

azure - 将现有(整个)Azure DevOps 管道迁移到基于 YAML 的管道(批量)

python - U-SQL + Python 返回列数未知的数据帧

javascript - React setState() 保证

javascript - 像示例一样制作 Turn.js 书?

javascript - 如何 promise 这段 Mongoose 代码?

node.js - 如何在 Heroku 上运行二进制文件

powershell - 将涉及 AzureRM 的 powershell 脚本作为 Azure Web 作业运行

javascript - .getScript() 等同于 MooTools?

javascript - 如何通过 jQuery/Js 获取外部 js 主机源?