无法启动Azure中托管的nodejs web api

时间:2016-05-22 07:16:44

标签: javascript node.js azure restify

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

我创建了一个非常简单的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中,现在我想使用App Services在Azure中托管这些API。

我的项目结构如下:

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

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

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

我实际上遇到了404错误: The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

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

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

Azure中此方案中使用的packages.json文件是什么?

感谢。

1 个答案:

答案 0 :(得分:2)

作为Azure App Services上托管的应用程序的根目录路径,D:\home\site\wwwroot。关于nodejs应用程序,Azure结构将在根目录中找到入口脚本,如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 wile。

如有任何疑问,请随时告诉我。