使用esbuild打包Express/Sequelize/SQLite应用的SQLite模块问题
补充说明
关于Sequelize的问题已查明:网关维护者指向了旧端点,导致返回结果异常,我自身也未直接测试应用、未监控日志,对此负有责任。
但SQLite模块的问题仍未解决,希望有人能提供思路,哪怕结论是“因XX原因无法实现”。
原问题描述
为避免node_modules占用约200MB存储空间,我尝试用esbuild打包Express应用,但遇到Sequelize和SQLite3模块的问题,其中SQLite3问题如下:
SQLite相关问题
打包后的.js文件未包含SQLite3模块。我尝试显式引入该模块并传入Sequelize实例的dialectModule:属性,解决依赖问题后出现以下错误:
Error: express-api-starter-ts package.json is not node-pre-gyp ready: package.json must declare these properties: binary at Object.gRe [as validate_config] (path\dist\index.js:137:219) at HM.find (path\dist\index.js:404:8282) at path\dist\index.js:406:166 at path\dist\index.js:1:356 at path\dist\index.js:411:108 at path\dist\index.js:1:356 at Object.<anonymous> (path\dist\index.js:413:12918) at Module._compile (node:internal/modules/cjs/loader:1241:14) at Module._extensions..js (node:internal/modules/cjs/loader:1295:10) at Module.load (node:internal/modules/cjs/loader:1091:32)
我还尝试将node_sqlite3编译为.node文件,用esbuild默认的.node loader传入该属性,却出现this.lib.Database is not a constructor错误。
目前临时方案是在服务器安装该模块,虽能运行但不符合预期。
Sequelize相关问题(已解决)
曾发现REST接口返回结果未遵循Sequelize定义的模型结构,代码中定义的小写字段名,返回结果却是数据库中的大写字段名,后查明是网关问题。
求助
希望有过类似经历的人提供解决方案。我使用的打包命令为:
esbuild src/index.ts --platform=node --loader:.node=file --bundle --minify --outfile=dist/index.js
内容的提问来源于stack exchange,提问作者lsimonetii
相关产品推荐
相关产品推荐

