Ubuntu 20.04安装BrainJS后运行引入代码提示brain未定义如何解决
问题产生原因
- 核心原因是安装了错误的依赖包。
npm install brain安装的是2017年就停止维护的废弃旧库,和当前维护的brain.js是两个完全独立的npm包,二者的导出规则、API设计、路径标识均不匹配。你写的引入语句是查找brain.js模块,但本地node_modules里只有brain包,模块解析失败自然触发brain is not defined报错。 - 最初执行
npm install brain.js报错属于环境问题,通常由Ubuntu 20.04默认源安装的Node.js版本过低、npm缓存损坏、目录权限异常导致,并非包本身不可用,换装旧包属于回避问题而非解决问题。 - 额外注意:就算把引入路径改成
const brain = require('brain')临时跑通,旧版brain包功能缺失、存在大量已知bug,和参考教程的API完全不匹配,后续跑神经网络相关代码会持续出现兼容问题,不建议使用。
可行解决方案
按顺序执行以下操作即可修复问题:
- 先卸载错误安装的旧包,在项目根目录终端执行:
npm uninstall brain - 修复本地基础环境问题,解决最初安装brain.js报错的根因:
- 执行
node -v查看本地Node.js版本,若版本低于14.x先升级Node.js,Ubuntu 20.04默认apt源安装的Node版本通常为10.x,版本过低无法兼容新版brain.js的依赖 - 执行
npm cache clean --force清理损坏的npm缓存 - 若之前安装报错是权限问题导致,不要用sudo强行执行npm安装命令,修正当前项目目录的用户权限即可
- 执行
- 重新安装正确的依赖包:
npm install brain.js - 根据运行环境调整引入写法:
- 若在Node.js环境下运行CommonJS规范代码,原有引入语句
const brain = require('brain.js');可直接正常使用 - 若在浏览器端、Visual Studio前端项目中使用ES模块规范,不要用CommonJS的require写法,替换为ES导入语句:
import brain from 'brain.js';
- 若在Node.js环境下运行CommonJS规范代码,原有引入语句
内容的提问来源于stack exchange,提问作者kloud
相关产品推荐
相关产品推荐

