[英]'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。
還有另一個問題指向同一個問題。 其中一條評論聲明它是一個已知的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.