在Node.js 12.22.5中导入pigpio模块提示require未定义怎么解决?
问题产生原因
- 你的Node.js运行环境当前启用了ES模块模式,CommonJS规范的
require语法在原生ES模块环境下无法被识别。触发该模式一般有两种情况:一是项目根目录的package.json文件里配置了"type": "module"字段,二是你运行的脚本文件后缀为.mjs。 - 特殊情况排查:如果你是在浏览器环境运行这段代码,浏览器本身就不支持原生
require语法,而且pigpio是树莓派专属的硬件控制模块,本身就不能在浏览器环境运行。
解决方法
方案1:适配ES模块模式,改用ES模块导入语法
如果需要保留当前的ES模块配置,把原来的导入代码替换为以下写法即可:
import { Gpio } from 'pigpio';
如果运行提示没有对应导出,可调整为:
import pigpio from 'pigpio'; const Gpio = pigpio.Gpio;
方案2:切回CommonJS模块模式,继续使用require
如果你更习惯用require语法,做任意一项调整就行:
- 删除项目
package.json里的"type": "module"配置项 - 把你运行的脚本文件后缀从
.mjs改成.js
额外注意
运行代码前要先在项目目录执行npm install pigpio完成模块安装,且该模块仅支持在树莓派的Linux系统下运行,其他环境会触发额外报错。
内容的提问来源于stack exchange,提问作者laieman
相关产品推荐
相关产品推荐

