【问题标题】:NodeJS throws Illegal instruction: 4 on Mac OS [closed]NodeJS 在 Mac OS 上抛出非法指令:4 [关闭]
【发布时间】:2019-04-13 10:08:42
【问题描述】:

每当我运行我的程序时,它都会抛出非法指令: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 秒钟,然后停止它,但在播放 5 秒钟后程序终止并且控制台输出是:

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

我正在使用来自 npm 的播放器包:https://www.npmjs.com/package/player

【问题讨论】:

    标签: javascript node.js macos npm


    【解决方案1】:

    问题在于player npm module 中的speaker npm module

    我在演讲者 GitHub repo "OSX - Illegal Instruction:4" 中发现了以下问题

    解决方案是更新 node_modules/speaker 中的扬声器:

    npm install speaker --mpg123-backend=openal
    

    (我还将 lame 更新到了 1.2.4 版,您可能也需要这样做)

    最后,我在播放器模块中重建了 bin

    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);
    });
    

    希望有帮助

    【讨论】:

      【解决方案2】:

      当您使用为不同系统或架构编译的二进制插件时,通常会发生这种情况。

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

      您还可以删除 node_modules 并从头开始运行 npm install

      如果这没有帮助,则可能是您正在使用的某些模块存在错误,或者它不支持您的架构,或者该模块使用的某些库未安装在您的系统正常。

      【讨论】:

        【解决方案3】:

        尝试以下方法:

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

        它对我有用。

        【讨论】:

          猜你喜欢
          • 2017-09-03
          • 2018-03-20
          • 2012-04-27
          • 1970-01-01
          • 2015-01-09
          • 1970-01-01
          • 2018-06-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多