#javascript #vue.js #midi #quasar-framework #playlist
Вопрос:
Я пытаюсь воспроизвести и получить midi — сигналы из midi-файла в quasar. Я использую библиотеку midi-player-js, но не могу заставить ее работать.
вот мой компонент:
<template>
<div>
PLAY
<q-btn round @click="play" size="10px" />
</div>
</template>
<script>
import { Player } from "midi-player-js";
export default {
name: "Playlist",
methods: {
play: function () {
console.log("PLAY");
let player = new Player((event) => {
console.log("TEST", event);
});
// var Player = new MidiPlayer.Player(function (event) {
// console.log(event);
// });
player.loadFile("./test.mid");
player.play();
},
},
};
</script>
При использовании последней версии библиотеки (2.0.14) я получаю сообщение об ошибке:
Uncaught TypeError: midi_player_js__WEBPACK_IMPORTED_MODULE_0__.Player is not a constructor
at Proxy.play (VM198 Playlist.vue:23)
at callWithErrorHandling (runtime-core.esm-bundler.js?9e79:155)
at callWithAsyncErrorHandling (runtime-core.esm-bundler.js?9e79:164)
at emit (runtime-core.esm-bundler.js?9e79:993)
at eval (runtime-core.esm-bundler.js?9e79:7310)
at onClick (QBtn.js?9c40:152)
at callWithErrorHandling (runtime-core.esm-bundler.js?9e79:155)
at callWithAsyncErrorHandling (runtime-core.esm-bundler.js?9e79:164)
at HTMLButtonElement.invoker (runtime-dom.esm-bundler.js?8886:349
И когда я использую версию 2.0.3 (ту же, что используется в этом рабочем примере) Я получаю сообщение об ошибке:
Uncaught Error: Cannot find module 'fs'
at s (midiplayer.js?5109:1)
at eval (midiplayer.js?5109:1)
at Player.loadFile (midiplayer.js?5109:2027)
at Proxy.play (Playlist.vue?3e9b:31)
at callWithErrorHandling (runtime-core.esm-bundler.js?9e79:155)
at callWithAsyncErrorHandling (runtime-core.esm-bundler.js?9e79:164)
at emit (runtime-core.esm-bundler.js?9e79:993)
at eval (runtime-core.esm-bundler.js?9e79:7310)
at onClick (QBtn.js?9c40:152)
at callWithErrorHandling (runtime-core.esm-bundler.js?9e79:155)
Если я использую этот код:
<template>
<div>
PLAY
<q-btn round @click="play" size="10px" />
</div>
</template>
<script>
import MidiPlayer from "midi-player-js";
export default {
name: "Playlist",
methods: {
play: function () {
console.log("PLAY");
var player = new MidiPlayer.Player(function (event) {
console.log(event);
});
player.loadFile("./test.mid");
player.play();
},
},
};
</script>
Я получаю сообщение об ошибке:
runtime-core.esm-bundler.js?9e79:218 Uncaught loadFile is only supported on Node.js
Чего мне не хватает? Может быть, то, как я загружаю промежуточный файл?
Комментарии:
1.
loadFile is only supported on Node.js
объясняет проблему — вы не в node.js2. Так что же я могу использовать в vue тогда?
3. вы имеете в виду midi в браузере? не уверен — в mdn есть какая-то документация о midi в браузере
4. Нет, я хотел загрузить файл. Аксиос?
5. о, fetch, xmlhttprequest, axios jquery, действительно все, что вы хотите, это не имеет значения