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

Node.js SerialPort打开串口时遇权限及语法错误求助

问题解决:SerialPort两种运行报错处理

环境信息

  • serialport 版本:^11.0.0
  • Node.js 版本:v18.16.0
  • npm 版本:9.5.1

1. 普通用户运行:Permission denied 报错

原因

Linux系统中,/dev/ttyUSB0这类串口设备的访问权限默认归属dialout用户组,普通用户未加入该组时无法访问设备。

解决步骤

  1. 将当前用户添加到dialout组:
    sudo usermod -aG dialout $USER
    
  2. 注销并重新登录(组权限变更需重新登录才能生效)
  3. 再次执行node index.js即可正常访问串口设备。

2. sudo运行:SyntaxError 报错

原因

sudo默认会重置环境变量,PATH会切换为系统默认路径,导致调用的是系统自带的旧版本Node.js(而非你安装的v18.16.0)。旧版本Node.js不支持serialport 11.x中使用的可选链操作符(?.)和空值合并运算符(??),因此触发语法错误。

解决方法(二选一)

方法一:使用Node.js绝对路径运行

  1. 先查询当前用户的Node.js路径:
    which node
    
    输出示例:/usr/local/bin/node
  2. 使用sudo调用该绝对路径运行脚本:
    sudo /usr/local/bin/node index.js
    

方法二:保留用户环境变量运行

让sudo继承当前用户的PATH环境变量,确保调用正确的Node.js版本:

sudo env PATH=$PATH node index.js

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:57:40