如何使用另一个版本的节点在电子应用程序中执行命令?

问题描述 投票:0回答:1

我正在尝试弄清楚如何使用 Electron。一切都很好,但我有一个问题。

我有:

  • 用于项目操作的电子应用程序
  • 我的设备上有几个 Node.js 版本

我的行动:

  1. 选择项目目录
  2. 按下按钮,将项目路径和“yarn install”命令传递给主流程处理程序。

主要负责人:

import { ipcMain } from 'electron';
import { exec } from 'node:child_process';

ipcMain.handle(
  'run-command',
  async (
    _event,
    {
      path,
      command,
    }: {
      path: string;
      command: string;
    },
  ) =>
    new Promise((resolve, reject) => {
      exec(command, { cwd: path }, (error, stdout, stderr) => {
        if (error) {

          reject(new Error(`Command failed: ${command}\n${stderr}`));
          return;
        }

        resolve(stdout);
      });
    }),
);

但是由于节点版本错误,该命令返回错误。 我想使用操作系统的默认节点版本 (18.18.2),但应用程序使用旧版本 (11.5.0)。

是否可以为任何项目使用不同的node.js版本? 我只想在项目的上下文中运行一些命令,就像在终端中手动运行一样。

有人可以解释一下,我该怎么做吗?感谢您的关注和建议!

node.js terminal electron
1个回答
0
投票

解决方案在这里: 子进程中的 nvm

exec("source path/to/nvm.sh && nvm use 14 && mycommand")

就我而言,没有 nvm.sh (我不知道为什么),所以我重新安装了它,它就出现了。

© www.soinside.com 2019 - 2024. All rights reserved.