【问题标题】:Azure API App Node.js deployment issuesAzure API 应用 Node.js 部署问题
【发布时间】:2016-03-02 17:01:55
【问题描述】:

我正在使用 Node.js(Express、Swaggerize、Sequelize 和 SQLlite)测试 Azure API 应用服务。到目前为止,我的开发工作站一切正常,但在尝试部署应用程序时遇到了一些问题。

首先,我创建了 API 应用程序“容器”,并将我的 VSTS Git 存储库与 API 容器连接起来。将代码推送到 repo 时一切正常(容器会在几秒钟内自动获取所有更改)。

但是...(以下问题)

  1. 如何解决我的节点依赖关系? (到目前为止,我一直在通过容器控制台手动调用“npm install”。我不想将我的包推送到 GIT 存储库中
  2. 我不能在 sequelize 中使用 SQLite 方言,因为尽管该包似乎在我的应用程序依赖项和 node_modules 目录中,但我的应用程序仍然抛出异常

    Wed Mar 02 2016 16:57:16 GMT+0000 (Coordinated Universal Time): Unaught exception: Error: Please install sqlite3 package manually
    at new ConnectionManager (D:\home\site\wwwroot\node_modules\sequelize\lib\dialects\sqlite\connection-manager.js:24:11)
    at new SqliteDialect (D:\home\site\wwwroot\node_modules\sequelize\lib\dialects\sqlite\index.js:12:28)
    at new Sequelize (D:\home\site\wwwroot\node_modules\sequelize\lib\sequelize.js:213:18)
    at Object.<anonymous> (D:\home\site\wwwroot\app\models\index.js:8:17)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17)
    at require (internal/module.js:16:19)
    at Object.<anonymous> (D:\home\site\wwwroot\app\app.js:11:14)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17)
    at require (internal/module.js:16:19)
    at Object.<anonymous> (D:\home\site\wwwroot\server.js:3:1)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    

我有什么遗漏的吗?

【问题讨论】:

  • 你用npm install packagename --save吗?
  • 当然!我做到了。

标签: node.js azure azure-api-apps


【解决方案1】:

问题似乎是由于缺少 npm 包sqlite3 引起的。所以你需要手动安装包,但是安装会失败,因为安装包sqlite3需要gyp编译器(根据包here的描述)Azure App Service不支持。

您可以参考文档Using Node.js Modules with Azure applicationsNative Modules 部分了解原因和解决方法。

【讨论】:

  • 我明白你的意思。但是,如果我将我的 sequelize 方言切换到 MySQL 或任何其他方言,我可以期待同样的奇怪行为吗?我的意思是,是否有任何非原生的 Node.js DB 模块?或者我应该将 API DB 移动到另一个 PaaS 服务?
  • @javierglozano 依赖于像mysql这样的node包是用JavaScript写的,不需要编译。
  • 谢谢@Peter-Pan-msft 但我想试试 SQLite。无论如何,谢谢你指点我。
  • @javierglozano 你是说这个包npmjs.com/package/sqlite吗?它被包裹了sqlite3,所以和我说的一样。
猜你喜欢
  • 1970-01-01
  • 2011-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 2022-01-25
  • 2016-07-24
相关资源
最近更新 更多