javascript - 无法启动Azure中托管的nodejs Web api

标签 javascript node.js azure restify

学习nodejs并开始使用restify创建我自己的restful API。

我创建了一个非常简单的 server.js 文件,其中基本上包含一个 hello world 类型示例,启动方式如下:

server.post('/api/messages', servicemanager.verifyFramework(), servicemanager.listen());

server.get(/.*/, restify.serveStatic({
    'directory': '.',
    'default': 'index.html'
}));

server.listen(process.env.port || 3978, function () {
    console.log('%s listening to %s', server.name, server.url); 
});

在本地运行良好。我打不通http://localhost:3978我可以测试我的 API 调用,调用 http://localhost:3978/api/messages 就好了.

我已将代码部署到 bitbucket 中,现在我想使用应用服务在 Azure 中托管这些 API。

我的项目结构是这样的:

/topfolder
  -/myproject
     -/node_modules
       -/node_modules...
     server.js
     package.json
     index.html

当我在 Azure 中设置新的应用服务时,我可以看到部署从 BB 接收了代码,但该服务从未响应我的请求。

我已经设置了应用程序的主路径:/site/wwwroot/topfolder/myproject,当我导航到时,我可以看到index.html http://myproject.azurewebsites.net那就好。

我实际上收到了 404 错误: 您要查找的资源已被删除、更名或暂时不可用。

有很多关于如何使用 bitbucket 设置持续部署的示例,并且在大多数情况下,它们似乎都可以工作,但我的 server.js 文件似乎没有被调用或启动向上。

如何调试这里发生的事情?

Azure 在本场景中使用了 packages.json 文件吗?

谢谢。

最佳答案

Azure 应用服务上托管的应用程序的根目录路径为 D:\home\site\wwwroot。对于nodejs应用程序,Azure Fabric会在根目录中找到入口脚本,例如server.js。请求通过根目录中的 web.config 进行处理。如果缺少 server.jsweb,config 文件,则会出现 404 错误。

您可以尝试修改应用程序的结构,例如:

-/node_modules
  -/node_modules...
server.js
package.json
index.html

然后,您通过 GIT 或从 BB 将应用程序部署到 Azure,Azure 部署任务将运行命令 npm install 并在根目录中生成 web.config目录。

如有任何进一步的疑问,请随时告诉我。

关于javascript - 无法启动Azure中托管的nodejs Web api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37371595/

相关文章:

c# - 查询没有分区键和行键的 azure 表

javascript - 图像高度只会从大量图像中检索一次

javascript - SAHI 捕获断言失败的屏幕截图

javascript - 获取函数的回调以将值返回给父函数

javascript - 从数组中删除空字符串

javascript - Nodenv 中的 x.x.x-rc Node.js 版本是什么?

javascript - 对字符串和 if 测试的简单 JavaScript 查询

javascript - 从 Node.js 连接 Azure 分析服务

c# - 不使用自定义域名时加载 Azure 证书

Azure Sql 数据仓库 API