Tengo un proyecto React básico con una base de datos PSQL. Tengo un archivo db.sql que contiene el código SQL para crear y completar una base de datos. Quiero tener un script npm en el archivo package.json para ejecutar el siguiente comando PSQL: psql -U postgres -f ./server/db.sql . Este comando funciona bien si lo ejecuto desde la terminal, pero no funciona si trato de llamarlo a través de un script npm.
archivo package.json :
"scripts": { ... "database": "psql -U postgres -f ./server/db.sql" } Error al ejecutar npm run database :
[Tue Jul 06 2021 18:56:09 GMT+0200 (Central European Summer Time)] ERROR Error: ENOENT: no such file or directory, open './config/app.yml' at Object.openSync (fs.js:476:3) at Object.readFileSync (fs.js:377:35) at Object.readConfig (C:\PATH\node_modules\yaml-config\lib\yaml-config.js:57:25) at Object.<anonymous> (C:\PATH\node_modules\psql\lib\config.js:2:23) at Module._compile (internal/modules/cjs/loader.js:1063:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10) at Module.load (internal/modules/cjs/loader.js:928:32) at Function.Module._load (internal/modules/cjs/loader.js:769:14) at Module.require (internal/modules/cjs/loader.js:952:19) at require (internal/modules/cjs/helpers.js:88:18) { errno: -4058, syscall: 'open', code: 'ENOENT', path: './config/app.yml' } Usage: C:\Program Files\nodejs\node.exe C:\PATH\node_modules\psql\bin\psql.js [query] [database] Examples: C:\Program Files\nodejs\node.exe C:\PATH\node_modules\psql\bin\psql.js -g prod -g dev "SELECT User FROM mysql.user" Lists all users from groups prod and dev. C:\Program Files\nodejs\node.exe C:\PATH\node_modules\psql\bin\psql.js "SELECT VERSION()" Get MySQL version from all servers Options: -g, --group Server group to execute the query on -d, --diff Diff-only: Display the rows that are on one server only Not enough non-option arguments: got 0, need at least 1Resultado esperado, como cuando se ejecuta el comando en la terminal directamente:
$ psql -U postgres -f ./server/db.sql Password for user postgres: You are now connected to database "temp-db" as user "postgres". CREATE TABLE COPY 117