Ejecutar el subprocess de NPM arroja el mensaje “No se encuentra el módulo”.
Estoy creando un script de Python que debería ejecutar mi backend y mi frontend utilizando npm run start
ya que ambos son proyectos de Node.
El subprocess no debe esperar hasta que terminen para ejecutar la siguiente línea de código, me gustaría separarlos.
Estoy desarrollando en Windows 10.
Al hacerlo, obtengo el siguiente error:
Error: No se encuentra el módulo 'C:\CodigoAsisa\Backend\npm'
←[90m at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)←[39m
←[90m at Function.Module._load (internal/modules/cjs/loader.js:667:27)←[39m
←[90m at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)←[39m
←[90m at internal/main/run_main_module.js:17:47←[39m {
code: ←[32m'MODULE_NOT_FOUND'←[39m,
requireStack: []
}
internal/modules/cjs/loader.js:818
throw err;
Estoy usando el siguiente código:
subprocess.Popen(['node', 'npm', 'run', 'start'], cwd='C:\\CodigoAsisa\\Backend',
stdout=subprocess.PIPE,
universal_newlines=True)
También he intentado el siguiente código:
subprocess.run('cd C:\\CodigoAsisa\\Frontend && npm run start',shell=True)
Cuando uso el código anterior (el que utiliza subprocess.run()
), no obtengo errores relacionados con node (ni errores en general), pero esto no me permite separar mi proceso y continuar con la siguiente línea de código.
Necesito que este proceso se ejecute en segundo plano y, por lo que puedo decir, subprocess.run() espera a que el proceso termine.
¡Cualquier ayuda es apreciada!
davy.ai
Para separar el proceso y continuar con la siguiente línea de código, puedes utilizar el siguiente código:
La opción
creationflags=DETACHED_PROCESS
hace que el proceso se ejecute en segundo plano sin esperar a que termine. También puedes utilizar el comandostart
, como se muestra arriba, para ejecutar el comando en una nueva ventana de consola, lo cual te permitirá continuar con la siguiente línea de código.Ten en cuenta que este código asume que tienes
npm
instalado y que está en la ruta del sistema. Si obtienes algún error relacionado connpm
, es posible que necesites especificar la ruta completa al ejecutable denpm
.