我正在编写一个Node.js/Express,它需要使用Web Audio API。我注意到,这实际上是"不可能的",因为这个stackoverflow回答中解释了一些原因。然而,我在网上发现了两个项目,它们似乎使用Node.js/Express以及WebAudio API。他们可以在这里和这里找到。当我尝试在我的应用程序中做类似的事情时(使用npm start
运行),我会得到以下错误:
/Users/user/Documents/STAGE4/PRCO304/RTMC/controllers/workstation/workstation.js:1
(function (exports, require, module, __filename, __dirname) { var context = new AudioContext();
^
ReferenceError: AudioContext is not defined
当我将行var context = new AudioContext();
更改为类似window.AudioContext = window.AudioContext
的行时,我会得到一个错误,即window
没有定义,我将其理解为Node.js的工作方式。
有人能向我解释一下这两个项目是如何在Node.js/Express中使用Web Audio API的吗?当我试图在我的项目中实现类似的东西时,它失败了?
提前谢谢。
Web Audio API在浏览器端,被烘焙到现代浏览器中,没有明确引入库。当然,nodejs是服务器端,所以你需要编写自己的或发现一个节点包,其中有人使用其发布的规范移植了Web Audio,以便直接在nodejs平台上使用,如果你想要一个独立的基于nodejs服务器的音频渲染项目,独立于任何浏览器。你提到的SO答案提到了使用这种方法的npm模块
当然,您可以将系统设计为只互连服务器和浏览器,这在今天是非常可行的,也是大多数人在将节点与音频相结合时所采取的路线。
你还没有明确表示你更喜欢哪种架构???
nodejs当然可以与WebAudio API一起使用,在任何一种架构中,我都使用每种方法编写了项目
我猜你上面的错误是试图执行服务器端代码,而不是与浏览器对话?在这种情况下,请确保您正在拉入一个nodejs端口的Web Audio API库