2016-03-05 7 views
11

Ich habe seit 2 Tagen mit diesem Fehler kämpfen und kann nicht erkennen, warum Elektronenrenderer in Windows OS fehlschlägt.'Unbekannter stdin Dateityp' Fehler in Windows

Wie reproduzieren:

Typen npm install devtool -g dann devtool innerhalb der Typ-Konsole geben process.stdin und es wird eine Fehlermeldung werden zwei Fehler sein, ein an der Leitung 127 und der andere an der Linie 128 in C: \ Users \ rafael \ AppData \ Roaming \ NPM \ node_modules \ DevTool \ node_modules \ elektronen prebuilt \ dist \ resources \ atom.asar \ Renderer \ lib \ Init.js (DevTool Update 2.x)

Error: Implement me. Unknown stdin file type!

C:\Users\rafael\AppData\Roaming\npm\node_modules\devtool\node_modules\electron-prebuilt\dist\resour…:127 Error: Implement me. Unknown stdin file type!(…)(anonymous function) @ C:\Users\rafael\AppData\Roaming\npm\node_modules\devtool\node_modules\electron-prebuilt\dist\resour…:127Module._compile @ module.js:425Module._extensions..js @ module.js:432Module.load @ module.js:356Module._load @ module.js:313Module.runMain @ module.js:457startup @ node.js:151(anonymous function) @ node.js:1007 C:\Users\rafael\AppData\Roaming\npm\node_modules\devtool\node_modules\electron-prebuilt\dist\resour…:128 Error: Implement me. Unknown stdin file type! at process.stdin (node.js:747) at hookProcess (C:\Users\rafael\AppData\Roaming\npm\node_modules\devtool\lib\preload.js:117) at C:\Users\rafael\AppData\Roaming\npm\node_modules\devtool\lib\preload.js:29 at Object.<anonymous> (C:\Users\rafael\AppData\Roaming\npm\node_modules\devtool\lib\preload.js:129) at Module._compile (module.js:425) at Object.Module._extensions..js (module.js:432) at Module.load (module.js:356) at Function.Module._load (module.js:313) at Module.require (module.js:366) at require (module.js:385)(anonymous function) @ C:\Users\rafael\AppData\Roaming\npm\node_modules\devtool\node_modules\electron-prebuilt\dist\resour…:128Module._compile @ module.js:425Module._extensions..js @ module.js:432Module.load @ module.js:356Module._load @ module.js:313Module.runMain @ module.js:457startup @ node.js:151(anonymous function) @ node.js:1007

+0

Verwenden Sie die standardmäßige Windows-Befehlszeilenshell cmd.exe? –

+0

Ich habe versucht, die Eingabeaufforderung, Git Bash und Powershell ... – rafaelcastrocouto

Antwort

3

Ich stieß auf das gleiche Problem.

Zuerst dachte ich, dass Devtool als REPL keine Stdin benötigt und ein einfacher Bug in Windows Build war. GitHub-Repo-Besitzer beheben es, indem sie beim Start nur stdin ignorieren, aber wie Sie entdeckt haben, ist devtool defekt und Sie können in Windows nichts mit stdin machen.

Als Proof of Concept erstelle ich ein einfaches Beispiel über DevTool REPL:

Dieses Stück Code funktioniert nicht.

//test.js 
var readline = require('readline'); 
var rl = readline.createInterface({ 
    input: process.stdin, 
    output: process.stdout, 
    terminal: true 
}); 

rl.on('line', function(line){ 
    console.log(line); 
}) 

DevTool test.js < input.txt

Error: Implement me. Unknown stdin file type! 

Windows 7 x64, S. O. Administratorrechte, Knoten v5.10.0, npm v3.8.3 DevTool v1.9.1.

Ich hatte einen Kommentar in Ihrem Github issue aber ist geschlossen, so öffnete ich eine new one.

+0

seit Devtool 2.x müssen Sie 'process.stdin' in der Konsole eingeben, um den Fehler zu sehen. – rafaelcastrocouto

+0

Es ist sicherlich Windows verwandt, da es nicht in anderen OS passiert ... Ich glaube wirklich, das Problem ist in Elektron – rafaelcastrocouto

1

Es gibt another question verweist auf das gleiche Problem. Einer der Kommentare heißt es, dass es ein known iisnode issue und schlägt auch eine Arbeit um durch alle Anrufe process.stdin wie Verpackung:

if(!process.env.IISNODE_VERSION) { 
    // do stuff with process.stdin 
} 

Es kann eine vorübergehende Lösung sein. Ich bin mir sicher, dass du dir diesen Post bereits angesehen hast, was denkst du?

+0

Iisnode beherbergt Nodejs in IIS. Ich denke nicht, ist verwandt. – jlvaquero

+0

Ah ok. Entschuldigung –

1

Das Durchlesen der libuv source code, die Nodejs für bestimmte Low-Level-Operationen verwendet, scheint, dass der Typ des Puffers oder Handle nicht speziell für Windows bestimmt werden kann. Die GetFileType-Funktion scheint ein unbekanntes Handle zurückzugeben.

Dies ist definitiv ein Windows-Problem, da der Teil der Bibliothek, der den Typ des Handle bestimmt, innerhalb src/win/handle.c des UV-Quellcodes liegt, also glaube ich nicht, dass dies * NIX OS'es betrifft.

Vielleicht die installierte nodejs Version fehlt eine Build-Time-Option?

+0

Ich landete auch bei der 'handle.c' Datei und ich bin immer noch auf der Suche nach einer Möglichkeit, um es unter Windows – rafaelcastrocouto

+0

@rafaelcastrocouto gut zu machen, die Sache ist, dass GetFileType, was sie verlassen, um den Handle-Typ ist eine Microsoft-Betriebssystemfunktion, die ein unbekanntes Handle zurückgibt, ich bin kein Experte in diesem Bereich, aber das führt mich zu der Annahme, dass der Fix außerhalb eines einfachen Hacks in Ihrem JS-Code ist ... vielleicht ein Problem in Nodejs Bugtracker zu öffnen? –

+0

Kann ich fragen, warum brauchen Sie es auf Windows? Nur neugierig, warum nicht auf einer VirtualMachine oder so etwas bauen? Im schlimmsten Fall können Sie Cygwin ausprobieren, obwohl ich mir nicht sicher bin, wie schwer es sein wird, Nodejs in einer Cygwin-Umgebung zu erstellen. –

0

Ich hatte diesen Fehler beim Versuch, Elektron von einem Konsolenfenster aus zu starten; Es war seltsam, weil es gut funktioniert hatte.Ich habe heute festgestellt, dass das einzige, was ich geändert habe, war, ein Terminalfenster von Visual Studio Code (mit Add-On) zu starten.

Wenn ich einen Terminal erstellt von VS-Code (Terminal addon) verwenden dann, wenn ich versuche node_modules\.bin\electron zu laufen erhalte ich:

d:\Code\Applications\Example>"node_modules\.bin\electron" 
internal/process/stdio.js:86 
     throw new Error('Implement me. Unknown stdin file type!'); 
     ^

Error: Implement me. Unknown stdin file type! 
    at process.stdin (internal/process/stdio.js:86:15) 
    at startup (node.js:198:18) 
    at node.js:457:3 

wenn ich ein Konsolenfenster direkt im Explorer zu machen, funktioniert es völlig in Ordnung.

+0

Wie erstellt man ein Konsolenfenster direkt im Explorer? – rafaelcastrocouto

+1

während im Verzeichnis; Datei-> Eingabeaufforderung öffnen. –

+0

Ich bekomme den Fehler in der Eingabeaufforderung – rafaelcastrocouto

1

Eine sehr einfache Problemumgehung wäre, nur zu zwingen, dass devtool in seinem eigenen Konsolenfenster läuft.

Also statt Laufen: Die

devtool 

Run:

start devtool 

Es sollte in einem neuen Fenster geöffnet und nicht über das Eingangsrohr verwechselt werden.

Der gleiche Trick funktioniert mit vielen Node-Paketen.

Verwandte Themen