qiuxiang / tuner

Online tuner based on web audio api
https://qiuxiang.github.io/tuner/app/
MIT License
334 stars 122 forks source link

想在vue项目上使用aubio.js #5

Closed ghost closed 5 years ago

ghost commented 5 years ago

你好,我想在我的vue项目里面使用aubio.js,但是出现了一点问题,不知道您是否能帮我解答一下,谢谢 刚开始,我先在普通的html文件里面引入模块进行测试(代码省略了中间的细节)

<script type="module">
    import { Module } from './aubio.js'
    var pitchDetector = new (Module().AubioPitch)('default', bufferSize, 1, audioContext.sampleRate);
</script>

测试成功了

然后我在.vue文件了引入了这个模块(不知道您知否了解vue框架) 刚开始报错这个

Uncaught (in promise) TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them

这个报错是因为babel强制使用了严格模式,所以我在工程里添加了babel-plugin-transform-remove-strict-mode这个包,并且把.babelrc文件修改为下面的代码

{
  "presets": [
    ["env"],
    "stage-3"
  ],
  "plugins": [
    "transform-remove-strict-mode"
  ]
}

这个报错消失了,但是出现了另外一个报错

Uncaught (in promise) TypeError: (0 , _aubio.Module)(...).AubioPitch is not a constructor

我觉得可能是因为我对js模块化编程还不够了解,用法出问题了才导致这种情况 感谢您的解答!

qiuxiang commented 5 years ago

aubio 的用法看这里 https://github.com/qiuxiang/aubiojs

aubio.js 是编译出来的,不应该再被 babel 处理。

ghost commented 5 years ago

谢谢,我在.babelrc里面ignore了aubio.js,成功了