You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1 MacBook执行npm run start-server报illegal hardware instruction错误如何解决

问题描述

目标

使用TensorFlow.js构建一个运行在服务端的、用于训练和分类模型的Node.js Web服务器,目前正按照官方教程学习TensorFlow.js。

预期结果

服务器能在本地对应端口正常运行,输出示例如下:

$ npm run start-server
...
  > Running socket on port: 8001
Epoch 1 / 1
eta=0.0 ========================================================================================================>
2432ms 34741us/step - acc=0.429 loss=1.49

实际报错

@MacBook-Pro baseball % npm run start-server

> tfjs-examples-baseball-node@0.2.0 start-server
> node server.js

zsh: illegal hardware instruction  npm run start-server

软硬件配置

  • MacBook Pro (13英寸, M1, 2020)
  • 芯片:Apple M1
  • macOS Big Sur 版本 11.4
  • @tensorflow/tfjs-node版本:^1.3.2
  • Node.js版本:v14.17.5
  • Xcode 12.5.1 / Build版本 12E507

已尝试的无效方案

  1. 使用@tensorflow/tfjs-node的更早版本,例如1.2.0、1.0.0
  2. 使用@tensorflow/tfjs-node的最新版本3.8.0
  3. 确认Mac已安装Python 2.7.16和Python 3.9.6
  4. 删除node_modules和package-lock.json后重新执行npm install
  5. 将Node.js升级到最新版本
  6. 确认Xcode已正确安装

可行解决方案

该报错是M1芯片的arm64架构和tfjs-node官方预构建的x86架构二进制包不兼容导致,可选择以下任意一种方案解决:

方案1:Rosetta转译运行(操作最简单)

  1. 打开访达→应用程序→实用工具,右键点击「终端」,选择「显示简介」
  2. 勾选「使用Rosetta打开」,重启终端
  3. 重新执行npm install安装依赖,再启动服务即可正常运行

方案2:原生arm64运行(无转译性能损耗)

  1. 首先升级Node.js到16及以上版本(Node.js 16开始原生支持Apple M1架构,不要使用14版本)
  2. 卸载原有tfjs-node依赖,执行以下命令从源码编译安装:
npm install @tensorflow/tfjs-node --build-from-source
  1. 编译过程耗时约5-10分钟,完成后直接启动服务即可

临时过渡方案

如果仅做学习使用,不需要最高性能,可以直接替换为纯JS版本的TensorFlow.js:

  1. 卸载@tensorflow/tfjs-node,安装@tensorflow/tfjs
  2. 将代码中导入tf的语句从require('@tensorflow/tfjs-node')修改为require('@tensorflow/tfjs'),其余代码无需改动即可正常运行

内容的提问来源于stack exchange,提问作者Sujay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 09:00:02