我希望在编译后的node.js应用程序中使用一个简单的数据库,是否可以不单独安装数据库?即我希望将数据库包含在.exe文件中,以便我只需复制和执行该文件。
我正在使用
我正在使用
pkg
创建.exe文件,并且它运行良好,但当我使用npm模块sqlite3时,.exe文件在执行时出现错误,并显示以下警告:pkg/prelude/bootstrap.js:1155
throw error;
^
Error: Cannot find module 'C:\snapshot\sqlite\node_modules\sqlite3\lib\binding\node-v51-win32-x64\node_sqlite3.node'
1) If you want to compile the package/file into executable, please pay attention to compilation warnings and specify a literal in 'require' call. 2) If you don't want to compile the package/file into executable and want to 'require' it from filesystem (likely plugin), specify an absolute path in 'require' call using process.cwd() or process.execPath.
at Function.Module._resolveFilename (module.js:470:15)
at Function.Module._resolveFilename (pkg/prelude/bootstrap.js:1252:46)
at Function.Module._load (module.js:418:25)
at Module.require (module.js:498:17)
at Module.require (pkg/prelude/bootstrap.js:1136:31)
at require (internal/module.js:20:19)
at Object.<anonymous> (C:\snapshot\sqlite\node_modules\sqlite3\lib\sqlite3.js:4:15)
at Module._compile (pkg/prelude/bootstrap.js:1226:22)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
这看起来类似于一个已经在此处修复的sqlite3 bug: https://github.com/zeit/pkg/issues/183 (因为bug已被修复,我认为这是用户问题)
根据错误信息来看,似乎找不到...../bide_sqlit3.node
文件。在我的开发环境中查看node_modules/
(模块正常工作的地方),我找不到那个文件。因此我假设该文件未被包含在可执行文件中,而我需要做一些事情:
- 让
pkg
将该文件包含在二进制文件中 - 修改文件路径以使其成为二进制文件中文件的路径
如何使用zeit/pkg
实现这一点?或者,如果这更正确:如何强制npm将二进制文件安装到node_modules,然后引用这些二进制文件?