1

win8/IIS8でiisnodeがスムーズに動作しています。非常にシンプルなハローワールドを作成しましたが、うまく機能します。ただし、process.stdin を使用しようとすると、次のエラーが発生します。

Application has thrown an uncaught exception and is terminated:
Error: Implement me. Unknown stdin file type!
    at process.startup.processStdio.process.openStdin [as stdin] (node.js:405:17)
    at Object.<anonymous> (C:\ApprendaPlatform\SiteData\developer\v1\root\shim\node_modules\actionhero\bin\zzz.js:7:20)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (C:\Program Files\iisnode\interceptor.js:210:1)
    at Module._compile (module.js:449:26)

これは process.stdout では得られないことに注意してください。

私のコード:

// kaboom!
var breakthings = process.stdin;

// works
// var breakthings = process.stdout;

iisnode は stdin に対して何かおかしなことをしていますか、それとも設定を誤っていますか?

4

2 に答える 2

1

私の場合、問題は引き続き発生するため、iisnode ファイルの process.stdin から getter をオーバーライドするだけです。

var events = require('events');

// Define a custom getter for process.stdin since iisnode still didn't fix the bug
process.__defineGetter__('stdin', function(){
    return new events.EventEmitter();
})

// no kaboom anymore ;)
var breakthings = process.stdin;

この助けを願っています;)

更新 (2016 年 2 月 6 日): より賢明でクリーンな方法で:

var events = require('events');

delete process.stdin;
process.stdin = new events.EventEmitter();

// no kaboom anymore ;)
var breakthings = process.stdin;
于 2016-05-31T10:11:13.677 に答える