Azure node.js API App - 在运行时失败(可能是node.js版本问题?)

时间:2017-12-31 20:03:59

标签: node.js azure continuous-integration azure-pipelines azure-api-apps

我有一个node.js API应用程序,它通过VSO(Visual Studio Online)中的持续交付/部署进行部署。

我发现当我导入' express'等模块时,应用程序失败了。 我安装了#express;#39;在天蓝色的机器上,通过Kudo控制台。但那并没有帮助。

我在输出控制台中看到的运行时错误:

Application has thrown an uncaught exception and is terminated:
SyntaxError: Unexpected token ILLEGAL
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (D:\home\node_modules\tedious\lib\tedious.js:4:29)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)

请注意,我确实看到了article建议使用节点&gt;但是你可以在我的package.json中看到,我明确指的是节点&gt; 6。

package.json看起来像这样:

{
  "name": "my_API_Service",
  "engines": {
    "node": "6.11",
    "npm": "1.1.65"
  },
  "version": "1.0.0",
  "description": "",
  "main": "MyService.js",
  "dependencies": {
    "async": "^2.6.0",
    "body-parser": "^1.18.2",
    "express": "^4.16.2",
    "http": "0.0.0",
    "sequelize": "^4.28.6",
    "swaggerize-express": "^4.0.5",
    "swaggerize-ui": "^1.0.1",
    "tedious": "^2.1.5"
  },
  "devDependencies": {
    "gulp": "^3.9.1",
    "gulp-util": "^3.0.8"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "https://<my_api_service_url>"
  },
  "author": "",
  "license": "ISC"

=============关闭===============

I finally got my app running (very intuitively might i add) by configuring it on Windows OS (instead of Linux OS). I was really set on having it run on Linux, but it turned out to be a walk thru a mine field. 

1 个答案:

答案 0 :(得分:2)

首先,您可以检查node_modules是否位于Web应用服务的wwwroot文件夹中。

其次,基于这篇文章:Using Node.js Modules with Azure applications

  

Azure云服务希望所有模块都安装在   开发环境,以及要包含的node_modules目录   作为部署包的一部分。可以启用支持   使用package.json或npm-shrinkwrap.json文件安装模块   关于云服务;但是,此配置需要自定义   Cloud Service项目使用的默认脚本。举个例子   有关如何配置此环境的信息,请参阅要运行的Azure启动任务   npm install以避免部署节点模块。

所以,它需要node_modules中的包(经过测试,通过webpack编译nodejs应用程序,并将没有node_modules的输出文件部署到azure(Node JS Empty web app模板),但无法加载。它在没有node_modules的本地工作正常(调用节点) xx.js开始))

因此,您可以在部署包中包含这些包,或者参考上面的文章以使用Windows Azure启动任务来运行npm install以避免部署节点模块。