window node child_process.exec 下‘wget’ 不是内部或外部命令

问题描述

目的:
利用node 的child_process.exec() 来实现对图片的下载,下载到本地。
问题:
在子进程中执行 'wget -d "https://api.tinypng.com/output/e5ptad7nmuxk0b83bcuytqhhx1qw7y95" -O D:\h5Project\tinifymini\src\q.min.png' ,出现 ‘wget’ 不是内部或外部命令。 已加好环境变量,直接在cmd.exe 里是可以执行wget的。

问题出现的环境背景及自己尝试过哪些方法

1、安装环境变量
2、利用node 的bash
3、对编码进行解析

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

    var exec = child_process.exec;
    var binaryEncoding = 'binary'
    var iconv = require('iconv-lite');
    var encoding = 'cp936'
    // var cmd = 'wget -d "' + param["url"] + '" -O ' + param["newsrc"] ;
    
    // 首先保证cmd 下支持wget 命令
    var free = exec(  'wget -d "https://api.tinypng.com/output/e5ptad7nmuxk0b83bcuytqhhx1qw7y95" -O D:\\h5Project\\tinifymini\\src\\q.min.png' , { encoding: binaryEncoding },function (error, stdout, stderr) {
        console.log(error)
        console.log('========err=')
        console.log(iconv.decode(new Buffer(stdout, binaryEncoding), encoding), iconv.decode(new Buffer(stderr, binaryEncoding), encoding));
        if (error) {
            param["error"](error);
        } else {
            param["callback"](result);
        }
    });
    

你期待的结果是什么?实际看到的错误信息又是什么?

下载图片打本地目标盘

阅读 2.6k
1 个回答
新手上路,请多包涵

最后不用child_process ,用request 进行压缩后的图片下载。

    
    var writeStream = fs.createWriteStream(param["newsrc"]);
    var readStream = request(param["url"])
    readStream.pipe(writeStream);
    readStream.on('end', function() {
        console.log('文件下载成功');
    });
    readStream.on('error', function(err) {
        console.log("错误信息:" + err)
        param["error"](err);
    })
    writeStream.on("finish", function(result) {
        console.log("文件写入成功");
        writeStream.end();
        param["callback"](result);
    });
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题