如何在Node.js中触发“系统铃声”

37

我正在运行一个长时间的自定义Node.js脚本,希望在脚本完成时得到通知。

如何让Node.js触发“系统哔声”?


4
在控制台窗口中运行任何其他内容的方法相同:将BEL字符(ASCII 7)输出到标准输出。 - Karl Knechtel
5
卡尔所说的是:console.log('\u0007'); - wulong
1
@wulong,非常感谢您的帮助,解决了我的问题!您应该把这个作为答案发表出来。 - Brad
3个回答

68

将BELL字符(Unicode 0007)输出到标准输出。

console.log('\u0007');

2023年更新

上面的解决方案不再适用,但直接写入标准输出仍然有效(在Node.js v14.20上测试通过):

process.stdout.write('\u0007');

参考资料


7
它在终端中有效,但在VSCode内的终端无效。 - Codler

14

在Windows 10上,我使用VSCode运行时无法使用console.log('\u0007')。但是以下代码可行:

import { exec } from 'child_process'
exec(`rundll32 user32.dll,MessageBeep`)

即使 console.log 的版本对我起作用,但在使用代码构建电子应用程序后它并未生效。您的解决方案也适用于 Windows 10 上的电子应用程序。 - messerbill
再来一个案例,使用 > 将控制台输出重定向到文件。 - benbai123

3

我知道这个问题标记为Unix,但我是从谷歌上找到的,所以这里提供一个Windows PowerShell解决方案。

当前的答案在Windows中运行良好,但我需要比标准Windows音调更独特的东西,所以这对我的需求更好:

const { exec } = require('child_process');

// Single beep
exec("[console]::beep(1000, 500)", {'shell':'powershell.exe'});

// Multiple beeps
exec("1..3 | %{ [console]::beep(1000, 500) }", {'shell':'powershell.exe'});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接