Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MediaStreamRecorder和TypeScript未捕获类型错误_Javascript_Html_Audio_Typescript_Media - Fatal编程技术网

Javascript MediaStreamRecorder和TypeScript未捕获类型错误

Javascript MediaStreamRecorder和TypeScript未捕获类型错误,javascript,html,audio,typescript,media,Javascript,Html,Audio,Typescript,Media,我目前正在开发一款使用用户PC麦克风的录音机,效果很好。但是,当我想要录制音频时,我会遇到以下类型的错误: audioHandler.ts:45未捕获类型错误:MediaStreamRecorder不是函数 代码如下: /// <reference path="../references.d.ts" /> //This component handles all things audio related export = Scaut.AudioHandler; module Sc

我目前正在开发一款使用用户PC麦克风的录音机,效果很好。但是,当我想要录制音频时,我会遇到以下类型的错误:

audioHandler.ts:45未捕获类型错误:MediaStreamRecorder不是函数

代码如下:

/// <reference path="../references.d.ts" />
//This component handles all things audio related

export = Scaut.AudioHandler;

module Scaut.AudioHandler {

    var n = <any>navigator;
    var stream = <any>"";
    var stopRecording = <any>"";
    var mediaRecorder = <any>"";
    //var MediaStreamRecorder = <any>""; 

    //Check if microphone is ok
    export function hasGetUserMedia() {
        n.getUserMedia = n.getUserMedia ||
        n.webkitGetUserMedia ||
        n.mozGetUserMedia;

        if (n.getUserMedia) {
            n.getUserMedia({ audio: true},
                function (stream) {
                    var audio = <any>"";
                    audio = document.getElementById('audioRecord');
                    audio.src = window.URL.createObjectURL(stream);
                    audio.onloadedmetadata = function (e) {
                        audio.play();
                    };
                },
                function (err) {
                    alert("The following error occured: " + err.name);
                }
            );
        } else {
            alert("getUserMedia not supported");
        }

        recordAudio(stream);
    }

    //Record audio
    export function recordAudio(stream) {
        mediaRecorder = new MediaStreamRecorder(stream);
        console.log("Stream: "+stream)
        mediaRecorder.mimeType = 'audio/ogg';
        mediaRecorder.audioChannels = 1;
        mediaRecorder.ondataavailable = function (blob) {
            // POST/PUT "Blob" using FormData/XHR2
            var blobURL = URL.createObjectURL(blob);
            //document.write('<a href="' + blobURL + '">' + blobURL + '</a>');
            console.log("Blob: "+blob)
            console.log("BlobUrl: "+blobURL)
        };
        mediaRecorder.start(3000);
    }
//
//这个组件处理所有与音频相关的事情
export=Scaut.AudioHandler;
模块Scaut.AudioHandler{
变量n=');
log(“Blob:+Blob”)
log(“BlobUrl:+BlobUrl”)
};
mediaRecorder.启动(3000);
}

有人能给我指出正确的方向吗?

看起来您的错误是在编译时发生的(错误消息指向您的
.ts
文件)

该错误意味着编译器不知道
MediaStreamRecorder
类型,我假设您是从JavaScript库导入的

要清除错误,可以使用以下类似代码为其创建简单的类型定义

declare var MediaStreamRecorder: any;

这将清除错误,但不会给您任何进一步的类型检查或类型的自动完成。如果需要,可以改善这种情况。

您是否导入了文件中的?谢谢Fenton!这正是我想要的。事实上,我刚刚买了你的书Pro TypeScript,今天收到了,期待着深入了解。不客气,谢谢你买我的书:)