我有一个nodejs应用,我使用PKG为新版本创建linux二进制文件。我想添加knex db迁移功能,但当我运行二进制文件时,我得到以下错误:
[Error: ENOENT: no such file or directory, scandir '/app/migrations'] {
errno: -2,
code: 'ENOENT',
syscall: 'scandir',
path: '/app/migrations'
}
我的二进制驻留在/app
中,我的猜测是它正在那里寻找一个实际的文件夹(它不存在,因为我希望它是二进制文件的一部分)。
对于您的信息,使用knex迁移使我添加一个名为knexfile.js
的配置文件和一个名为migrations
的文件夹到我的项目主目录。我将scripts
行添加到package.json
的pkg部分,但问题仍然存在:
"pkg": {
"scripts": ["migrations/**/*", "knexfile.js"],
"assets": "dist/**/*"
},
我正在处理同样的问题,但我正在使用db-migrate。请记住,在打包的可执行文件中,pkg使用基本文件夹/snapshot,因此在您的节点文件中,您需要将cwd设置为/snapshot/(项目主目录)。他们的文档对此进行了更多的讨论。此外,pkg.assets配置数组似乎实际上没有做任何事情。使用路径。在节点文件中加入(__dirname, "migrations"),将迁移文件夹导入到可执行文件
中。