es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo llamar a una función JS con un parámetro pasado en un script de NPM

Estoy intentando ejecutar una función llamando a un script npm con un parámetro adicional que proporcionaría la ruta a un archivo específico. En una versión simplificada se vería así:

package.json

“reset_script”: “node -e ‘require(\”./script_reset_db\”).resetDatabase($npm_config_path)'”

script_reset_db.js

module.exports.resetDatabase = async (path) => { console.log(path) }

En una terminal de Node estoy ejecutando:

npm run reset_script –path=123

Pero el comando resulta en un error:

at [eval]:1:44
at Script.runInThisContext (node:vm:129:12)
at Object.runInThisContext (node:vm:305:38)
at node:internal/process/execution:81:19
at [eval]-wrapper:6:22
at evalScript (node:internal/process/execution:80:60)
at node:internal/main/eval_string:27:3

¿Tienes alguna idea de cuál podría ser el problema?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema está en la forma en que se pasa el parámetro al script en el comando de npm script. La sintaxis correcta para pasar un parámetro a un script de npm es usando dos guiones (–), seguidos del nombre del parámetro y su valor.

    La versión corregida del script de npm en el archivo package.json sería:

    "reset_script": "node -e 'require(\"./script_reset_db\").resetDatabase(process.env.npm_config_path)'"
    

    Y el comando de npm corregido en la terminal sería:

    npm run reset_script -- --path=123
    

    Ten en cuenta que el nombre del parámetro (–path) debe ir precedido por dos guiones (–) en el comando, y el valor del parámetro (123) debe ir después de un signo igual (=). Además, el parámetro es accedido en el script utilizando el nombre process.env.npm_config_path.

Comments are closed.