在 Azure Web 应用程序站点上使用 msnodesql 部署节点应用程序失败

Deploying a node app using msnodesql fails on azure Web apps site

我尝试 运行 使用 msnodesql 将 Azure Web 应用程序上的 node.js 代码发送到 Azure SQL 数据库,但它失败了。

我查看了评论(node.js + azure sql database),但还没有生效。

现在我通过站点上的工具 "console" 检查了 Azure 上的节点版本,它显示为 v4.2.3。我了解 msnodesql ( https://www.npmjs.com/package/msnodesql ) 现在支持节点 v0.8 或 v0.6。

我怀疑可能是他们的版本不匹配导致失败。 我在本地 PC 上安装了节点 v4.2.3,然后我可以使用 v0.6 和 v0.8 msnodesql (sqlserver.node) 重现此问题。

有人有解决方法吗? 我找不到降级 Azure node.js.

的方法

(2016/1/20)

感谢@PeterPan, 我终于可以 运行 带有模块 "tedious" 的 Azure 程序了。 非常感谢。

我没试过,但我可以根据 https://azure.microsoft.com/en-us/documentation/articles/nodejs-specify-node-version-azure-apps/#using-a-custom-version-with-azure-websites 指定 Node.js 版本来使用模块 msnodesql。

但是,我仍然想知道哪种方法更好,Node v4.2.3 有乏味,Node v4.2.3 有 msnodesqlv8(我还不能确定它是否有效),或者 Node v0.8 有 msnodesql/msnodesqlv8.

我想在另一个话题中讨论这个问题。

您可以尝试在项目的 package.json 文件中指定 NodeJS 版本(在 https://your_web_app_name.scm.azurewebsites.net/api/diagnostics/runtime 的 json 列表中),如下所示。

"engines":{"node": "0.6.22 || 0.8.x"}

或者您可以尝试参考Azure官方文档Specifying a Node.js version in an Azure applicationUsing a custom version with Azure Websites部分使用自定义版本。

如果你不必使用包 node-sqlserver,你也可以尝试使用纯 JavaScript 驱动 Tedious with no dependencies. And you can refer to the doc https://azure.microsoft.com/en-us/documentation/articles/sql-database-develop-nodejs-simple-windows/ 来了解如何使用它。

注意:在Azure上,NodeJS的一些模块在安装时编译,通常使用Python和node-gyp,如node-sqlserver这是一个本机 C 驱动程序,在后台使用 Microsoft ODBC 驱动程序。如果遇到此类问题,可以参考文档 Using Node.js Modules with Azure applications.

Native Modules 部分