Как избежать ошибок по умолчанию из библиотеки - PullRequest
1 голос
/ 27 апреля 2020

Я создал код, который действительно работает, но я вызываю библиотеку с ошибкой, и я хотел бы знать, возможно ли избежать этой указанной c строки кода. Я постараюсь объяснить случай как можно лучше:

Ошибка

Uncaught TypeError: fs.openSyn c не является функцией

Предыдущий код

function synthesizeToAudioFile(authorizationToken, message) {

    // replace with your own subscription key,
    // service region (e.g., "westus"), and
    // the name of the file you save the synthesized audio.
    var serviceRegion = "westus"; // e.g., "westus"
    var filename = "./audiocue.wav";

    //Use token.Otherwise use the provided subscription key
    var audioConfig, speechConfig;
    audioConfig = SpeechSDK.AudioConfig.fromAudioFileOutput(filename);
    speechConfig = SpeechSDK.SpeechConfig.fromAuthorizationToken(authorizationToken, serviceRegion);

    // create the speech synthesizer.
    var synthesizer = new SpeechSDK.SpeechSynthesizer(speechConfig, audioConfig);

    // start the synthesizer and wait for a result.
    synthesizer.speakTextAsync(message,
        function (result) {
            if (result.reason === SpeechSDK.ResultReason.SynthesizingAudioCompleted) {
                console.log("synthesis finished.");
            } else {
                console.error("Speech synthesis canceled, " + result.errorDetails +
                    "\nDid you update the subscription info?");
            }
            synthesizer.close();
            synthesizer = undefined;
        },
        function (err) {
            console.trace("err - " + err);
            synthesizer.close();
            synthesizer = undefined;
        });
    console.log("Now synthesizing to: " + filename);

}

Я создал метод, который позже повторил в своем текущем коде. Разница была в том, что я использовал Browserify для импорта библиотеки из script файла HTML:

    <script type="text/javascript" src="js/dist/sub_mqtt.js"></script>

В этом файле был мой метод и вся библиотека, которая это безумно нечитаемо, и поэтому я начал использовать ScriptJS для его импорта. Проблема в том, что, используя browserify, я смог удалить строку кода, которую он терпел неудачу, используя fs.openSync (и мне даже не нужно), но, импортировав его с ScriptJS, я не имею доступа к исходный код.

Я предполагаю, что не хватает того, что я не импортирую библиотеку fs, которая используется библиотекой, которую я импортирую с ScriptJS, перед импортом этой, но как это сделать? Я делаю это? Я попытался:

    <script src="../text-to-speech/node_modules/fs.realpath/index.js"></script>

или

    <script type="text/javascript" src="../text-to-speech/node_modules/fs.realpath/index.js"></script>

, а также обернуть содержимое synthesizeToAudioFile() с

    require(["node_modules/fs.realpath/index.js"], function (fs) { });

, но я получаю следующую ошибку:

Uncaught ReferenceError: модуль не определен в индексе. js: 1

1 Ответ

0 голосов
/ 28 апреля 2020

После изучения этого вопроса я обнаружил следующее утверждение:

Пакет fs на npm был пуст и ничего не делал, однако многие пакеты по ошибке зависели от него. npm, в c. взяла на себя владение им.

Это также встроенный модуль Node. Если вы зависели от fs, вы можете безопасно удалить его из зависимостей вашего пакета.

, поэтому я получил доступ к файлу, который мне требовался с помощью ScriptJS

 require(["../text-to-speech/microsoft.cognitiveservices.speech.sdk.bundle.js"]

и прямо удалите эту строку на нем. Обратите внимание, что, по крайней мере, в моем случае, очистка кеша браузера была необходима.

...