使用iisnode在Azure Web App上运行AtlasBoard

时间:2016-05-06 11:49:31

标签: node.js azure iisnode kudu atlasboard

我试图在Azure Web App中运行AtlasBoard,但无法让它工作。我使用“30秒开始”步骤创建了一个新板,当我在本地启动时,演示板运行正常。它既可以通过atlasboard start 3333启动,也可以运行node start

我已将node_modules目录添加到.gitignore。

我在Azure上使用git部署,这似乎工作正常。部署日志还显示已安装npm模块。

这是部署的最后一次输出:

Using start-up script start.js from package.json.
Generated web.config.
The iisnode.yml file explicitly sets nodeProcessCommandLine. Automatic node.js version selection is turned off.
Selected npm version 3.5.1
npm WARN Invalid name: "HRMTS AtlasBoard"
npm WARN wwwroot No description
npm WARN wwwroot No repository field.
npm WARN wwwroot No README data
npm WARN wwwroot No license field.
Finished successfully.

但是,应用程序似乎无法启动,当我查看Kudu控制台中的日志消息时,我明白了:

Error: error installing D:\home\site\wwwroot\packages\demo
    at process.<anonymous> (D:\Program Files (x86)\iisnode\interceptor.js:73:106)
    at emitOne (events.js:96:13)
    at process.emit (events.js:188:7)
    at process._fatalException (node.js:267:26)

有没有人对这里的错误有所了解?

1 个答案:

答案 0 :(得分:0)

如果您使用https://bitbucket.org/atlassian/atlasboard/src上的演示应用程序的repo在Azure上进行测试,我们需要进行一些其他修改才能在Azure Web Apps上运行测试。

首先,假设您已成功将应用程序部署到Azure,并且在开始运行应用程序时失败。然后,您可以利用Kudu控制台站点或Visual Studio Online扩展(请参阅How to install composer on app service?的答案,了解如何启用Azure Web Apps扩展)来检查D:\home\site\wwwroot\packages\demo\npm-debug.log处的错误日志。

有类似的错误:

  

155错误节点-v v0.6.20

     

156错误npm -v 1.1.37

     

157错误消息SSL错误:CERT_UNTRUSTED

似乎atlasboard运行命令,Azure上的节点版本非常低。我们可以手动修改依赖脚本以绕过错误。

如果在部署期间出现错误,则应在部署前修改package.json中的npm版本,例如:

"engines": {
    "npm": ">2.0.0",
    "node": ">=0.10"
  },

部署后:

  • 检查并修改根目录中port中的start.js

    atlasboard({port: process.env.port||3000 , install: true}, 
    function  (err) {
      if (err) {
        throw err;
      }
    });
    
  • 修改install中的D:\home\site\wwwroot\node_modules\atlasboard\lib\package-dependency-manager.js函数以使用更高的npm版本并删除--production参数,例如:

    ...
    var npmCommand = isWindows ? "D:\\Program Files (x86)\\npm\\3.5.1\\npm.cmd" : "npm";
    executeCommand(npmCommand, ["install", pathPackageJson], function(err,     code){
    ...
    })
    

然后重新启动您的网站。

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