学习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
文件是什么?
感谢。
答案 0 :(得分:2)
作为Azure App Services上托管的应用程序的根目录路径,D:\home\site\wwwroot
。关于nodejs应用程序,Azure结构将在根目录中找到入口脚本,如server.js
。请求通过根目录中的web.config
处理。如果缺少server.js
或web,config
文件,则会出现404错误。
您可以尝试修改或修改应用程序的结构,例如:
-/node_modules
-/node_modules...
server.js
package.json
index.html
然后,通过GIT或BB将应用程序部署到Azure,Azure部署任务将运行命令npm install
并在根目录中生成web.config
wile。
如有任何疑问,请随时告诉我。