我有一个Angular Universal应用程序,该应用程序将部署到Azure App Service(Windows)。
当应用程序在Windows 10 PC上本地运行时,它可以正常运行,但在云中,process.cwd()
似乎与在本地运行时不同。这导致Express.js在某些视图文件中查找错误的位置。
pwc进程应基于我执行节点的方式,在我的情况下,我的package.json中有一个启动脚本,它执行"node dist/server.js"
。但是我可以删除此脚本,Azure仍将启动我的应用程序。因此,我认为我的pwc问题的根源在于Azure如何启动我的节点应用程序。
不幸的是,Microsoft认为一些代码片段和一些John Papa视频足以为开发人员解决问题提供足够的文档。
问题
是否存在说明任何配置的文档或 App Service用于初始化我的节点应用程序的约定?哪里 它吗?
给出脚本"start": "node dist/server.js"
,为什么process.cwd()
在本地主机和Azure App Service上不同?这两个地方的文件结构都相同。
const DIST_FOLDER = join(process.cwd(), 'dist');
app.set('views', join(DIST_FOLDER, 'browser'));
Error: Failed to lookup view "index" in views directory "D:\home\site\wwwroot\dist\dist\browser"
答案 0 :(得分:2)
Windows Azure网站使用IISNode在IIS内部托管Node进程。实际上,为您的Node站点分配了一个命名管道,该管道可以接收传入的请求,而不是像在本地运行或托管自己时使用的TCP端口。
...
作为运行在Azure Web Apps上的node.js应用程序,需要使用server.js或app.js文件作为根目录中的入口,并带有web.config文件来控制iis
我必须将上面的行更改为此,以便它可以在Azure上运行:
append(names[:i], names[i+1:]...)
我发现重要的另一件事是使用“应用程序设置”中的 WEBSITE_NODE_DEFAULT_VERSION 为您的应用程序服务设置正确版本的节点。这是MDSN博客上的更多信息-NodeJs and NPM versions on Azure App Services
答案 1 :(得分:0)
由于我习惯于在Linux上托管Node应用程序,所以这完全让我无心。答案是...
请参阅web.config
答案 2 :(得分:0)
如果有人在这里发现自己,请将其放在您的server.ts文件中,以在本地和天蓝色工作。
array[i] <--> array[j]
非常感谢KayS的回答-真的很有帮助。