Есть ли способ скопировать в буфер обмена в Node.js? Какие-нибудь модули или идеи? Я использую Node.js в настольном приложении. Надеюсь, это проясняет, почему я хочу, чтобы это было возможно.
javascript
node.js
clipboard
Башня
источник
источник
Для OS X:
function pbcopy(data) { var proc = require('child_process').spawn('pbcopy'); proc.stdin.write(data); proc.stdin.end(); }
write()
может принимать буфер или строку. Кодировка по умолчанию для строки будет utf-8.источник
Проверить
clipboardy
. Он позволяет копировать / вставлять кроссплатформенные. Он поддерживается более активно, чемcopy-paste
модуль, упомянутый в другом ответе, и исправляет многие из проблем этого модуля.const clipboardy = require('clipboardy'); // Copy clipboardy.writeSync('🦄'); // Paste clipboardy.readSync(); //🦄
источник
çlipboardy
в кипарисе. У меня есть кнопка в моем веб-приложении, при нажатии на эту кнопку должно появиться содержимое буфера обмена, но он дает undefined, любые входные данные очень ценятся stackoverflow.com/questions/61650737/…Вот модуль, который предоставляет
copy
иpaste
функционирует: https://github.com/xavi-/node-copy-pasteКогда
require("copy-paste").global()
выполняется, добавляются две глобальные функции:> copy("hello") // Asynchronously adds "hello" to clipbroad > Copy complete > paste() // Synchronously returns clipboard contents 'hello'
Как и во многих других упомянутых ответах, для копирования и вставки в node вам необходимо вызвать внешнюю программу. В случае
node-copy-paste
, он обращается кpbcopy/pbpaste
(для OSX),xclip
(для Linux) иclip
(для Windows).Этот модуль был очень полезен, когда я много работал в REPL для побочного проекта. Излишне говорить, что
copy-paste
это всего лишь утилита командной строки - она не предназначена для работы с сервером.источник
Самый короткий способ в Windows:
const util = require("util"); require('child_process').spawn('clip').stdin.end(util.inspect("content_for_the_clipboard"));
источник
util
сначала нужно потребовать .ReferenceError: util is not defined
без предварительного включения,const util = require("util")
я безуспешно тестировал как в основном, так и в процессе рендеринга Electon. При этом от узла 12.14.1 CLI это сработало. Я думаю, можно с уверенностью сказать, что вы должны определить util, чтобы быть в безопасности, исходя из варианта использования.Мне удалось это сделать, создав другое приложение, которое этим занимается. Это конечно не лучший способ, но работает.
Я в Windows и создал приложение 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
Затем в Node.js я
child_process.exec
запускал приложение VB.NET, передавая копируемые данные в качестве аргумента командной строки:require('child_process').exec( "CopyToClipboard.exe \"test foo bar\"", function(err, stdout, stderr) { console.log(stdout); // to confirm the application has been run } );
источник
У Mac есть собственная командная строка
pbcopy
для этого варианта использования:require('child_process').exec( 'echo "test foo bar" | pbcopy', function(err, stdout, stderr) { console.log(stdout); // to confirm the application has been run } );
Тот же код для Linux, но заменить его
pbcopy
на Xclip (apt get install xclip
)источник
echo fooo | clip
. Теперь, как сделать это в Linux, не прося пользователя что-то установить?echo fooo | clip
может работать, но результат будет содержать '\ n' в последней строке первичной строки, это выходит за рамки моих ожиданий.проверь этот zeroclipboard
источник