Czy istnieje sposób kopiowania do schowka w Node.js? Jakieś moduły lub pomysły, co tak zawsze? Używam Node.js w aplikacji komputerowej. Mam nadzieję, że to wyjaśnia, dlaczego chcę, aby to było możliwe.
javascript
node.js
clipboard
Wieża
źródło
źródło
Dla OS X:
function pbcopy(data) { var proc = require('child_process').spawn('pbcopy'); proc.stdin.write(data); proc.stdin.end(); }
write()
może przyjąć bufor lub łańcuch. Domyślne kodowanie dla łańcucha to utf-8.źródło
Sprawdź
clipboardy
. Pozwala kopiować / wklejać między platformami. Jest bardziej aktywnie obsługiwany niżcopy-paste
moduł wymieniony w innej odpowiedzi i rozwiązuje wiele problemów z tym modułem.const clipboardy = require('clipboardy'); // Copy clipboardy.writeSync('🦄'); // Paste clipboardy.readSync(); //🦄
źródło
çlipboardy
w cypress, mam przycisk w mojej aplikacji internetowej, po kliknięciu tego przycisku powinno dostać się zawartość schowka, ale daje to niezdefiniowane, wszelkie dane wejściowe są bardzo cenione stackoverflow.com/questions/61650737/ ...Oto moduł, który zapewnia
copy
ipaste
działa: https://github.com/xavi-/node-copy-pastePo
require("copy-paste").global()
uruchomieniu dodawane są dwie funkcje globalne:> copy("hello") // Asynchronously adds "hello" to clipbroad > Copy complete > paste() // Synchronously returns clipboard contents 'hello'
Podobnie jak w przypadku wielu innych wymienionych odpowiedzi, aby skopiować i wkleić w węźle, musisz wywołać zewnętrzny program. W przypadku
node-copy-paste
, wywołujepbcopy/pbpaste
(dla OSX),xclip
(dla Linuksa) iclip
(dla Windows).Ten moduł był bardzo pomocny, gdy wykonywałem dużo pracy w REPL dla pobocznego projektu. Rzecz jasna,
copy-paste
to tylko narzędzie wiersza polecenia - to nie oznaczało dla pracy serwera.źródło
Najkrótsza droga w systemie Windows:
const util = require("util"); require('child_process').spawn('clip').stdin.end(util.inspect("content_for_the_clipboard"));
źródło
util
najpierw muszę wymagać .ReferenceError: util is not defined
bez wcześniejszego włączeniaconst util = require("util")
, przetestowałem zarówno w głównym procesie Electon, jak i procesie renderowania bez powodzenia. To powiedziawszy z węzła 12.14.1 CLI, zadziałało. Myślę, że można bezpiecznie powiedzieć, że powinieneś zdefiniować narzędzie jako bezpieczne w oparciu o przypadek użycia.Udało mi się to zrobić, tworząc inną aplikację, która to obsługuje. Z pewnością nie jest to najlepszy sposób, ale działa.
Korzystam z systemu Windows i utworzyłem aplikację VB.NET:
Module Module1 Sub Main() Dim text = My.Application.CommandLineArgs(0) My.Computer.Clipboard.SetText(text) Console.Write(text) ' will appear on stdout End Sub End Module
Następnie w Node.js
child_process.exec
uruchamiałem aplikację VB.NET, z danymi do skopiowania przekazywanymi jako argument wiersza poleceń:require('child_process').exec( "CopyToClipboard.exe \"test foo bar\"", function(err, stdout, stderr) { console.log(stdout); // to confirm the application has been run } );
źródło
Mac ma natywną linię poleceń
pbcopy
dla tego przypadku:require('child_process').exec( 'echo "test foo bar" | pbcopy', function(err, stdout, stderr) { console.log(stdout); // to confirm the application has been run } );
Ten sam kod dla Linuksa, ale zastąpić
pbcopy
z Xclip (apt get install xclip
)źródło
echo fooo | clip
. A teraz, jak mieć to w Linuksie bez pytania użytkownika o instalację?echo fooo | clip
może działać, ale wynik będzie zawierał „\ n” na końcu pierwotnego ciągu, jest to niezgodne z moim oczekiwaniem.sprawdź tę pustą szafkę
źródło