Azure node.js API App - 在运行时失败(可能是node.js版本问题?)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Azure node.js API App - 在运行时失败(可能是node.js版本问题?)相关的知识,希望对你有一定的参考价值。
我有一个node.js API应用程序,通过VSO(Visual Studio Online)中的持续交付/部署进行部署。
当我导入诸如'express'之类的模块时,我发现应用程序失败了。我通过Kudo控制台在azure机器上安装了'express'。但那并没有帮助。
我在输出控制台中看到的运行时错误:
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
ode_modules ediouslib edious.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)
请注意,我确实看到这个建议使用节点> 4的article。但正如您在我的package.json中看到的,我明确指的是node> 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.
首先,您可以检查node_modules是否位于Web应用程序服务的wwwroot文件夹中。
其次,基于这篇文章:Using Node.js Modules with Azure applications
Azure云服务期望在开发环境中安装所有模块,并将node_modules目录作为部署包的一部分包含在内。可以在Cloud Services上使用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以避免部署节点模块。
以上是关于Azure node.js API App - 在运行时失败(可能是node.js版本问题?)的主要内容,如果未能解决你的问题,请参考以下文章
使用 cors、express 和 google api 的 Node.js 服务器应用程序在 Azure 部署后无法正常工作
如何为 Azure 上的 Node.js Api 应用启用 BLOB 日志记录?
Azure 移动应用 Node.js 后端 - 推送通知错误状态代码 400
使用 Node.js 服务器为 Next.js 授权 Azure 存储服务 REST API - 从 URL 复制 Blob
如何使用 node.js 运行时访问 Azure Function App 函数中的 multipart/form-data
Azure Web App-当您选择Runtime stack作为Node.js时,为什么只让您选择Linux作为操作系统?