无法连接到数据库 - EADDRNOTAVAIL

can't connect to DB - EADDRNOTAVAIL

我有一个简单的 node.js 应用程序无法连接到 SQL Db。

Web 服务器是 Azure Web App,运行 node.js 并使用 Tedious 作为 SQL。 数据库是 Azure SQL 数据库。

这是详细的错误:

{ message: 'Failed to connect to xxx.database.windows.net:1433 - undefined', code: 'ESOCKET' }

Thu Jan 14 2016 08:05:05 GMT+0000 (Coordinated Universal Time): Unaught exception: ConnectionError: Connection lost - connect EADDRNOTAVAIL at Connection. (D:\home\site\api\node_modules\tedious\lib\connection.js:797:26) at Socket. (D:\home\site\api\node_modules\tedious\lib\connection.js:33:15) at Socket.emit (events.js:88:20) at Array.1 (net.js:301:14) at EventEmitter._tickCallback (node.js:190:38)

它可以在我的机器上运行,有趣的是它也可以在另一个 Azure Web 应用程序上运行!我尝试重新启动此 Web 应用程序,但没有...此错误是什么意思?

我尝试重现该问题,但失败了。所以我搜索了一些关键作品,比如 EADDRNOTAVAIL 的 NodeJS & Tedious,然后我找到了页面 https://github.com/nodejs/node-v0.x-archive/issues/6833.

启发我,这个问题可能是在某个特定的版本节点上引起的。您可以在url https://<the_bad_webapp_name>.scm.azurewebsites.net/Env找到坏WebApp的节点版本,并与好的WebApp进行比较。

You can see alll node version supported by Azure at the url https://<node webapp name>.scm.azurewebsites.net/api/diagnostics/runtime of Node WebApp.

如果他们的节点版本不同,您可以尝试指定 Tedious 的节点版本适用于糟糕的 webapp,请参阅文档 https://azure.microsoft.com/en-us/documentation/articles/nodejs-specify-node-version-azure-apps/ 了解如何操作。

希望对您有所帮助。