簡體   English   中英

Windows中的“未知的stdin文件類型”錯誤

[英]'Unknown stdin file type' error in windows

我一直在努力解決這個錯誤2天,並且無法理解為什么電子渲染器process.stdin在Windows操作系統中失敗。

如何重現:

鍵入npm install devtool -g然后在控制台類型process.stdin鍵入devtool 將會出現兩個錯誤,一個在第127行,另一個在第128行在C:\\ Users \\ rafael \\ AppData \\ Roaming \\ npm \\ node_modules \\ devtool \\ node_modules \\ electron-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

我遇到了同樣的問題。

首先我認為devtool作為REPL不需要stdin,並且是windows build中的一個簡單bug。 GitHub repo所有者修復它只是在啟動時忽略stdin但是,正如你所發現的那樣,devtool已經壞了,你無法在windows中對stdin做任何事情。

作為概念證明,我創建了一個超出devtool REPL的簡單示例:

這段代碼不起作用。

//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,SO管理員權限,Node v5.10.0,npm v3.8.3 DevTool v1.9.1。

我在你的github 問題上留了一個評論,但是關閉了,所以我開了一個新評論

還有另一個問題指向同一個問題。 其中一條評論聲明它是一個已知的iisnode問題 ,並建議通過將所有調用包裝到process.stdin例如:

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

它可以是一個臨時解決方案。 我相信你已經看了那篇文章,你怎么看?

通過libuv源代碼讀取,這是nodejs用於某些低級操作的,似乎原因是無法專門為windows確定緩沖區或句柄的類型。 GetFileType函數似乎返回一個未知句柄。

這絕對是一個Windows唯一的問題,因為確定句柄類型的庫部分在UV源代碼的src/win/handle.c中,所以我認為這不會影響* NIX OS'。

也許已安裝的nodejs版本缺少構建時選項?

一個非常簡單的解決方法是強制devtool在自己的控制台窗口中運行。

所以不是運行:

devtool

運行這個:

start devtool

它應該彈出一個新窗口,不要混淆輸入管道。

同樣的技巧適用於很多Node包。

嘗試從控制台窗口啟動電子時,我遇到了這個錯誤; 這很奇怪,因為它一直很好。 我今天意識到,我唯一改變的是從Visual Studio Code(附加組件)啟動一個終端窗口。

如果我使用從VS Code(終端插件)創建的終端,那么當我嘗試運行node_modules\\.bin\\electron我得到:

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

如果我直接在資源管理器中創建一個控制台窗口,它可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM