typescript 运行TypeORM迁移时出现节点错误

aiqt4smr  于 2023-02-10  发布在  TypeScript
关注(0)|答案(1)|浏览(160)

运行时出现错误

yarn run migration:run

package.json中,该脚本为

"migration:run": "dotenv -e ../.env DB_PORT=4420 npx run typeorm migration:run",

下面是错误:

❯ yarn run migration:run    
yarn run v1.22.19
warning ../../package.json: No license field
$ dotenv -e ../.env DB_PORT=4420 npx run typeorm migration:run
node:events:368
      throw er; // Unhandled 'error' event
      ^

Error: spawn DB_PORT=4420 ENOENT
    at Process.ChildProcess._handle.onexit (node:internal/child_process:282:19)
    at onErrorNT (node:internal/child_process:477:16)
    at processTicksAndRejections (node:internal/process/task_queues:83:21)
Emitted 'error' event on ChildProcess instance at:
    at Process.ChildProcess._handle.onexit (node:internal/child_process:288:12)
    at onErrorNT (node:internal/child_process:477:16)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  errno: -2,
  code: 'ENOENT',
  syscall: 'spawn DB_PORT=4420',
  path: 'DB_PORT=4420',
  spawnargs: [ 'npx', 'run', 'typeorm', 'migration:run' ]
}
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

我有另一个Docker容器使用端口5432用于Postgres,这就是为什么我将其设置为4420并将其作为命令的一部分传入。我在搜索中发现了一些类似的错误,但没有一个是运行此命令的结果。我尝试了我能想到的一切,包括删除yarn.lock/node_modules并重新运行yarn。但还是没能解决问题。有人能给我一些建议,告诉我该如何度过难关吗?先谢谢你。

sgtfey8w

sgtfey8w1#

如果其他人遇到这种情况,问题在于我在package.json中定义命令的方式。

"migration:run": "dotenv -e ../.env DB_PORT=4420 npx run typeorm migration:run"

"migration:run": "DB_PORT=4420 dotenv -e ../.env npm run typeorm migration:run"

如果你使用dotenv,你必须先定义你想让cli命令使用的任何env变量,* 然后 * 调用dotenv。另外,我必须把npx改为npm,现在它工作得很好。

相关问题