我尝试打包使用sqlite ans sequelize的应用程序。我的包json是这样的:
"dependencies": { "@types/bluebird": "^3.5.26", "@types/libxmljs": "^0.18.3", "@types/node": "^11.12.1", "@types/restify": "^7.2.9", "@types/restify-errors": "^4.3.3", "@types/uuid": "^3.4.4", "@types/validator": "^10.11.0", "@types/ws": "^6.0.1", "better-queue": "^3.8.10", "data-store": "^3.1.0", "libxmljs": "^0.19.5", "pkg": "^4.3.7", "restify": "^8.2.0", "sequelize": "^5.8.7", "sequelize-cli": "^5.4.0", "sqlite3": "^4.0.8", "typescript": "^3.3.4000", "uuid": "^3.3.2", "winston": "^3.2.1", "ws": "^6.2.1", "yamljs": "^0.3.0" }, "pkg": { "assets": [], "scripts": [ "build/*.js", "build/routes/*.js", "build/**/*.js", "node_modules/sequelize/*.js", "node_modules/sequelize/**/*.js", "node_modules/sqlite3/lib/*.js", "node_modules/sqlite3/*.js*", "node_modules/node-pre-gyp/lib/*.js", "node_modules/node-pre-gyp/lib/util/*.js*" ] }, "bin": "build/main.js",
我的Main.js是:
function initializeDB() {
// Return new promise
return new Promise(function (resolve, reject) {
// Do async job
console.log("returning promise");
resolve(1);
})
}
initializeDB()
// Perform DB migrations and seeders
.then(() => {
console.log("sequelize db:migrate");
// Require dbconfig so that the correct .env file is picked up before we try and update any databases and cached.
return exec.execSync("echo 'pooja' && sequelize db:migrate", { stdio: 'inherit' })
})
// Start Server
.then(() => {
console.log("Staring server");
require('./server.js')
})
.catch((err) => {
console.log('Error: ' + err)
process.exit(1)
})
此外,我用于打包应用程序的命令是:
pkg . --targets latest-win-x64
这是我的app.exe放在同一文件夹中,我可以运行。当我将exe复制到其他文件夹时,出现错误消息:
E:\SOME_OTHER_DIR>APP.exe returning promise sequelize db:migrate
'sequelize' is not recognized as an internal or external command, operable program or batch file.
Error: Error: Command failed: sequelize db:migrate
请让我知道如何使app.exe与sqlite一起工作并进行续集。我也尝试将“ node_sqlite3.node”也复制到其他文件夹。