NodeJS在Mac OS上抛出非法指令:4

3
每当我运行我的程序时,它会抛出“非法指令:4”,但我不知道原因。

我的代码:

glob('/path/music/*.mp3', function(error, files) {
for(var i = 0; i < files.length; i++) {
    songs.push(files[i]);
    console.log("Added file: " + files[i]);
}

console.log("Init player");
p = new player(songs)
    .on('playing', function(song){
        console.log("Playing now: " + song._name);
    })
    .on('playend', function(song){
        console.log("Next song....");
    })
    .on('error', function(song){
        console.log("Error:" + error);
    }).play();

    setTimeout(function(){ p.stop();},5000);


    console.log(JSON.stringify(p))
});

这个程序应该从我的路径中播放一个mp3文件,持续5秒钟,然后停止它。在播放完毕后,程序应该终止,并输出以下内容:

> node script.js
Playing now: music.mp3
Illegal instruction: 4

我正在使用npm的player包:https://www.npmjs.com/package/player
3个回答

2
问题出在player npm module中的speaker npm module模块。
我在speaker的GitHub存储库中发现了以下问题"OSX - Illegal Instruction:4"
解决方法是更新node_modules/speaker中的speaker模块:
npm install speaker --mpg123-backend=openal

我还将lame更新到了1.2.4版本,你可能也需要进行更新。
最后,我重建了播放器模块中的二进制文件。
npm run build

这是我用来测试/调试的代码:
const glob = require('glob');
const player = require('player');

glob('*.mp3', (error, files) => {
  console.log("Init player");
  const p = new player(files);

  p.on('playing', function(song){
      console.log("Playing now: " + song._name);
  })
  .on('playend', function(song){
      console.log("Next song....");
  })
  .on('error', function(song){
      console.log("Error:" + error);
  });

  p.play();

  setTimeout(function(){
    p.next();
  }, 2000);
});

希望能有所帮助。

0

请尝试以下操作:

npm uninstall player --save
npm uninstall speaker --save
npm install player --mpg123-backend=openal

对我来说它起作用了。


0

这通常发生在使用为不同系统或架构编译的二进制附加组件时。

您可以尝试在应用程序目录中运行npm rebuildnpm install

您也可以删除node_modules,然后从头开始运行npm install

如果这样做没有帮助,则可能是您正在使用的某些模块出现了错误,或者它不支持您的体系结构,或者某些被该模块使用的库未正确安装在您的系统上。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接