MacOS下Node.js child_process exec执行solana --help报错求助
解决VSCode中Node.js执行solana命令报错的问题
问题原因
VSCode启动时的环境变量与终端全局环境变量不一致,导致Node.js的exec方法无法读取到配置了solana的全局PATH,因此找不到solana命令。
解决方案
方法一:使用solana的绝对路径执行
先在终端执行which solana获取solana的绝对路径(比如/usr/local/bin/solana),然后修改代码:const util = require('util'); const exec = util.promisify(require('child_process').exec); (async () => { const { stdout, stderr } = await exec('/usr/local/bin/solana --help'); console.log('stdout:', stdout); console.log('stderr:', stderr); })();方法二:手动指定环境变量PATH
在终端执行echo $PATH复制你的全局PATH值,然后在exec的选项中传入该PATH:const util = require('util'); const exec = util.promisify(require('child_process').exec); (async () => { const { stdout, stderr } = await exec('solana --help', { env: { ...process.env, PATH: '你的终端PATH值' // 替换成echo $PATH输出的内容 } }); console.log('stdout:', stdout); console.log('stderr:', stderr); })();方法三:从终端启动VSCode
关闭当前VSCode窗口,在终端进入你的项目目录后执行code .,这样VSCode会继承终端的全局环境变量,再运行Node代码即可正常找到solana命令。
内容的提问来源于stack exchange,提问作者Helix Development
相关产品推荐
相关产品推荐

