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.

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!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para separar el proceso y continuar con la siguiente línea de código, puedes utilizar el siguiente código:

    import subprocess
    DETACHED_PROCESS = 0x00000008
    
    subprocess.Popen(["start", "cmd", "/c", "npm run start"], cwd="C:\\CodigoAsisa\\Backend",
                         stdout=subprocess.PIPE, creationflags=DETACHED_PROCESS)
    

    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 comando start, 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 con npm, es posible que necesites especificar la ruta completa al ejecutable de npm.

Comments are closed.