学习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.js
或 web,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/