node-cross-spawn icon indicating copy to clipboard operation
node-cross-spawn copied to clipboard

I get different results using mac terminals and using cross-spawn

Open qiaolin-li opened this issue 1 year ago • 0 comments

image

qiaolin@qiaolindeMacBook-Pro-2 ~ % npm root -g
/Users/qiaolin/.nvm/versions/node/v16.20.2/lib/node_modules
image
 /**
     * 
     * @param {*} cmd 需要执行的命令,例如install、uninstall、update
     * @param {*} modules 需要操作的模块,例如[plugin1, plugin2]
     * @param {*} where 
     * @returns 
     */
      async execCommand(cmd, modules, where) {
        return await new Promise((resolve, reject) => {
            try {
                // spawn的命令行参数是以数组形式传入
                // 此处将命令和要安装的插件以数组的形式拼接起来
                // 此处的cmd指的是执行的命令,比如install\uninstall\update
                let args = [cmd].concat(modules).concat('--color=always').concat('--save')
                
                // 执行npm,并通过 cwd指定执行的路径——配置文件所在文件夹
                const npm = spawn(`npm`, args, { cwd: where }) 

                let output = ''
                // 获取输出、报错日志
                npm.stdout.on('data', (data) => output += data).pipe(process.stdout)
                npm.stderr.on('data', (data) => output += data).pipe(process.stderr)

                npm.on('close', (code) => {
                    // 如果没有报错就输出正常日志
                    if (!code) {
                        resolve(output) ;
                    } else {
                        reject(output);
                    }
                })

                npm.on('error', (err) => reject(err));
            } catch (error) {
                reject(error)
            }
        })
    }

   const aa  =lodash.trim(await this.execCommand('config', [ 'ls' ], constant.APPLICATION_PLUGINS_DIR));
     const       rootPath =lodash.trim(await this.execCommand('root', [ '-g' ], constant.APPLICATION_PLUGINS_DIR));

I get different results using mac terminals and using cross-spawn, why is that?

qiaolin-li avatar Jul 21 '24 04:07 qiaolin-li