最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

错误:在Windows上产卵ENOENT

IT培训 admin 3浏览 0评论

错误:在Windows上产卵ENOENT

我在节点V4.4.0和Windows 10.我使用本仁登录我节点应用。

try {
    var fs = require('fs');
    var path = require('path');
    var spawn = require('child_process').spawn;
    var through = require('through');
} catch (err) {
    throw err;
}

var prettyStream = function () {
    // get the binary directory of bunyan
    var bin = path.resolve(path.dirname(require.resolve('bunyan')), '..', 'bin', 'bunyan');
    console.log(bin); // this outputs C:\www\nodeapp\src\node_modules\bunyan\bin\bunyan, the file does exist

    var stream = through(function write(data) {
        this.queue(data);
    }, function end() {
        this.queue(null);
    });

    // check if bin var is not empty and that the directory exists
    if (bin && fs.existsSync(bin)) {
        var formatter = spawn(bin, ['-o', 'short'], {
            stdio: [null, process.stdout, process.stderr]
        });
        // stream.pipe(formatter.stdin); // <- did this to debug
    }

    stream.pipe(process.stdout); // <- did this to debug

    return stream;
}

日志记录在控制台吐出来,由于我用stream.pipe(process.stdout);事实上,我这样做是为了调试功能的其余部分。

然而,我收到错误:

Error: spawn C:\www\nodeapp\src\node_modules\bunyan\bin\bunyan ENOENT
    at exports._errnoException (util.js:870:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32)
    at onErrorNT (internal/child_process.js:344:16)
    at nextTickCallbackWith2Args (node.js:442:9)
    at process._tickCallback (node.js:356:17)
    at Function.Module.runMain (module.js:443:11)
    at startup (node.js:139:18)
    at node.js:968:3

我猜这是一个Windows错误。有人有想法么?

回答如下:

我知道了。在Windows班扬在控制台的程序,但作为一个命令不被认可。所以调用它需要使用cmd的。我也只好装全球班扬,使控制台可以访问它。

if (!/^win/.test(process.platform)) { // linux
    var sp = spawn('bunyan', ['-o', 'short'], {
        stdio: [null, process.stdout, process.stderr]
    });
} else { // windows
    var sp = spawn('cmd', ['/s', '/c', 'bunyan', '-o', 'short'], {
        stdio: [null, process.stdout, process.stderr]
    });
}

错误:在Windows上产卵ENOENT

我在节点V4.4.0和Windows 10.我使用本仁登录我节点应用。

try {
    var fs = require('fs');
    var path = require('path');
    var spawn = require('child_process').spawn;
    var through = require('through');
} catch (err) {
    throw err;
}

var prettyStream = function () {
    // get the binary directory of bunyan
    var bin = path.resolve(path.dirname(require.resolve('bunyan')), '..', 'bin', 'bunyan');
    console.log(bin); // this outputs C:\www\nodeapp\src\node_modules\bunyan\bin\bunyan, the file does exist

    var stream = through(function write(data) {
        this.queue(data);
    }, function end() {
        this.queue(null);
    });

    // check if bin var is not empty and that the directory exists
    if (bin && fs.existsSync(bin)) {
        var formatter = spawn(bin, ['-o', 'short'], {
            stdio: [null, process.stdout, process.stderr]
        });
        // stream.pipe(formatter.stdin); // <- did this to debug
    }

    stream.pipe(process.stdout); // <- did this to debug

    return stream;
}

日志记录在控制台吐出来,由于我用stream.pipe(process.stdout);事实上,我这样做是为了调试功能的其余部分。

然而,我收到错误:

Error: spawn C:\www\nodeapp\src\node_modules\bunyan\bin\bunyan ENOENT
    at exports._errnoException (util.js:870:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32)
    at onErrorNT (internal/child_process.js:344:16)
    at nextTickCallbackWith2Args (node.js:442:9)
    at process._tickCallback (node.js:356:17)
    at Function.Module.runMain (module.js:443:11)
    at startup (node.js:139:18)
    at node.js:968:3

我猜这是一个Windows错误。有人有想法么?

回答如下:

我知道了。在Windows班扬在控制台的程序,但作为一个命令不被认可。所以调用它需要使用cmd的。我也只好装全球班扬,使控制台可以访问它。

if (!/^win/.test(process.platform)) { // linux
    var sp = spawn('bunyan', ['-o', 'short'], {
        stdio: [null, process.stdout, process.stderr]
    });
} else { // windows
    var sp = spawn('cmd', ['/s', '/c', 'bunyan', '-o', 'short'], {
        stdio: [null, process.stdout, process.stderr]
    });
}

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论