Electronアプリでfork
またはspawn
を実行しようとすると、
Error: Could not call remote function 'fork'. Check that the function signature is correct. Underlying error: Path must be a string. Received [Function: callIntoRenderer]
どういうわけか間違った引数を渡しているように見えますか? 特定の呼び出しを確認する必要があります。
使用方法を説明する際に、私もxterm.jsを管理しているプロジェクトを提案することにより、READMEでこれを実行しようとしています。
ターミナルエミュレーターの作成(例:xterm.js経由)
デモhttps://github.com/sourcelair/xterm.jsとして使用例が含まれていますが、node-ptyとxterm.jsを使用して単純なElectronターミナルアプリを作成する方法を示すために、ここで何かを行うこともできます。
これが私が試していることです
const pty = remote.require('node-pty');
pty.spawn('C:/Program Files/Git/bin/bash.exe', [], {
name: 'xterm-color',
cols: 80,
rows: 30,
cwd: process.cwd,
env: process.env
});
childProcess
を生成して、xterm.jsターミナルにバインドします。 しかし、私をこのプロジェクトに導いたのはpty / ttyになりすます必要があるため、色を機能させることができません:)
https://github.com/Microsoft/vscode/blob/master/src/vs/workbench/parts/terminal/electron-browser/terminalProcess.jsで、VSCodeで私がどのように行っているかを正確に確認できます
次のElectronバグhttps://github.com/electron/electron/issues/38を回避するために、 terminalProcess.js
が独自のプロセスとして起動されていることに注意してください。terminalProcess.jsは次のように起動されますhttps:/ /github.com/Microsoft/vscode/blob/master/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts#L38
現在の設定では特に悪いことはありません。node-ptyとxterm.jsの間でデータを転送する方法に問題があるのではないでしょうか。 私はこのようなものを期待しています:
xterm.on('data', (data) => {
pty.write(data);
});
pty.on('data', function (data) {
xterm.write(data);
});
かっこいい、見てみます!
ホーリーモリー! それはうまくいきました🚀
フォームを使用しているのを見ました
import cp = require('child_process');
だから私は自分を変えたので突然タイプスクリプトの助けを借りてエラーが発生しました
process.cwd
vs process.cwd()
したがって、エラーメッセージ。
この素晴らしいライブラリをありがとう!
素晴らしい! 😄
@stoffeastrom電子の例を作成しているときに、 process.cwd
ヒットしたものに正確に遭遇したので、より良いエラーを与えるために例外を追加しました:stuck_out_tongue: https :
@stoffeastrom提案に感謝し、 https://github.com/Tyriar/node-pty/tree/master/examples/electronに例を追加しました