Sqlite 模块在部署期间正确安装在 Azure Web App 上,但在运行时使用不同版本的模块。

Sqlite module installs properly on Azure Web App during deploy, but uses different version of module at runtime.

我目前正在尝试在 Azure 网站上托管的节点应用程序中获取 Sqlite 数据库。

我在 package.json 的依赖项字段中列出了 Sqlite3:

"sqlite3": "^3.0.8"

部署时,我在安装过程中看到以下内容:

remote: [sqlite3] Success: "D:\home\site\wwwroot\node_modules\sqlite3\lib\binding\node-v11-win32-ia32\node_sqlite3.node" is installed via remote

但是,每次请求 returns 都会出现 500 错误,所以我查看了应用程序日志。

当我查看应用程序日志时,每次部署都会看到以下错误:

Mon Jun 29 2015 17:13:51 GMT+0000 (Coordinated Universal Time): Unaught exception: Error: Cannot find module 'D:\home\site\wwwroot\node_modules\sqlite3\lib\binding\node-v14-win32-ia32\node_sqlite3.node

如果您注意到,当 运行 应用程序查找 node_modules\sqlite3\lib\binding\node-v14-win32-ia32\node_sqlite3.node 但它安装到 node_modules\sqlite3\lib\binding\node-v11-win32-ia32\node_sqlite3.node。我对服务器的总体了解不够,甚至对节点的环境也不太了解,无法弄清楚如何将其指向正确的位置或安装其他版本。似乎 Azure 有一台机器构建代码,另一台机器 运行 代码,它们有不同的规格。

尝试将 Node JS 版本设置为 0.12.0。 这可以通过以下步骤从 Azure 门户完成:

  1. Select 网站
  2. Select "Settings" 然后 "Application Settings"
  3. 然后在"App settings"下将"WEBSITE_NODE_DEFAULT_VERSION"的值改为“0.12.0”