问题描述
想用npm run build的项目里导入了“child_process”这个包,提示我没有这个包,然后我用npm install child_process
命令安装这个包,但是仍然出问题!
发现问题
在node中可以用“child_process”,而且网上资料比较多,但是这个库npm已经不提供了,即使用npm install 下来也是一个空包,所以在使用时会出错。在查阅了n篇文章之后发现所有又找到了一个库execa,这个库是child_process 的加强版(具体参见官方文档)
execa的使用
1、应用实例
问题主要是官方文档都默认我们是编程高手,随便看看官方文档就会用了,实际上我就第一次看不会用呀(该不会就我不会吧,呜呜呜)
这个网上资料好像不是很多,即使有也很多写得不是很清楚,没办法,只能自己结合n篇文章+官方文档摸索使用,最后终于知道怎么用了,分享给大家,大家直接参考实例去用,使用例程如下:
const execa = require('execa');
const result = execa('python translatebaidu.py', ['apple'],(error, stdout, stderr) => {
if (error) {
throw error;
}
console.log(stdout);
});
result.stdout.on('data', function (data) {
console.log(data)
});
这时数据输出来了,但是编码方式不对,修改一下:
const execa = require('execa');
const iconv = require("iconv-lite");
const result = execa('python translatebaidu.py', ['apple'],(error, stdout, stderr) => {
if (error) {
throw error;
}
console.log(stdout);
});
result.stdout.on('data', function (data) {
console.log(iconv.decode(Buffer.from(data, 'binary'), 'cp936'))
});
2、过程中遇到的问题:(读者需要注意的地方)
(1)execa第一个参数是一个字符串,就是你在cmd中运行脚本的时候敲的命令;第二个参数是一个参数列表,放着你要给这个脚本传入的参数,注意是一个列表,没有列表就不返回;第三个参数一个函数,但是好像没有执行,不是很懂,有大佬懂的评论区告诉我哦~
(2)真正的结果输出是在result.stdout.on部分
最后
我属于那种学得很杂,我会发各种领域的文章出来,就是最近学到啥就发啥,有兴趣学习各种不同领域知识的各位读者大大可以关注一下下我,说不定能找到你感兴趣的东西哦~