iT邦幫忙

0

Node.JS serialport new 錯誤問題

  • 分享至 

  • xImage

nodeJS 版本 18.15.0

目前寫的部分

const Readline = require('@serialport/parser-readline')
var SerialPort = require("serialport");

const parser = new Readline(); 

var COMPort = "Com3";
var port = new SerialPort(COMPort, {baudRate: 9600}).setEncoding('utf8'); 

port.on("open", (err) => {  
    console.log('serial port open'); //成功連接時印出port open
    if(err){
        console.log("no serial device found")//失敗時印出 device not found
    }
  },20);
port.pipe(parser)
parser.on('data', line =>{
    console.log(line)
})

這兩行都會是 new的n 錯誤
const parser = new Readline();
var port = new SerialPort(COMPort, {baudRate: 9600}).setEncoding('utf8');

const parser = new Readline(); 
               ^
ReferenceError: Readline is not constructor

var port = new SerialPort(COMPort, {baudRate: 9600}).setEncoding('utf8');
           ^
ReferenceError: SerialPort is not constructor   

npm install serialport
npm install express
目前只有用這兩個

看更多先前的討論...收起先前的討論...
DanSnow iT邦好手 1 級 ‧ 2023-03-23 10:45:44 檢舉
你給的 code 裡沒有你出錯的部份,這樣看不知道問題出在哪,如果你貼的 code 就是全部,假設你把你說出錯的那行加在結尾的話,那你的 code 裡沒有 `log` 這個東西,自然也沒辦法 new
柯柯 iT邦新手 3 級 ‧ 2023-03-23 10:55:15 檢舉
log 是簡短代替錯誤的問題點
用目前的碼把錯誤點重新指出來 重新修改
目前的碼就是全部了
兩個錯誤都是指new的 n 然後寫 後面那個沒有constructor

serialport 有npm安裝了
alien663 iT邦研究生 5 級 ‧ 2023-03-23 11:12:37 檢舉
把new拿掉
柯柯 iT邦新手 3 級 ‧ 2023-03-23 11:13:29 檢舉
new 拿掉會變成這樣
var read = Readline();
^(指R)
TypeError: Readline is not a function
BeEvil_Y iT邦新手 4 級 ‧ 2023-03-23 11:19:26 檢舉
雖然我不是很懂Nodejs,但我怎覺得NEW不能這樣用?
建議你去下面連結了解一下。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Not_a_constructor
結果發現
你是照他的方式來用…
https://ithelp.ithome.com.tw/articles/10243023
柯柯 iT邦新手 3 級 ‧ 2023-03-23 11:54:24 檢舉
我是照他的教學在測試 後來有找到你下方貼的文章 serialport的版本問題
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
froce
iT邦大師 1 級 ‧ 2023-03-23 11:27:27
最佳解答
const { SerialPort } = require('serialport')
const { ReadlineParser } = require('@serialport/parser-readline')
const port = new SerialPort({ path: '/dev/ROBOT', baudRate: 14400 })

const parser = port.pipe(new ReadlineParser({ delimiter: '\r\n' }))

官網範例...可能是你參考的教學有點舊。
你整個引用沒解構。

https://serialport.io/docs/api-parser-readline

BeEvil_Y iT邦新手 4 級 ‧ 2023-03-23 11:37:50 檢舉
柯柯 iT邦新手 3 級 ‧ 2023-03-23 11:51:55 檢舉

對 剛剛有翻到這篇文章找到官方 10版的更新寫法
所以正常了
找到的文章是2020的 好像是 9版的 所以才有這個問題

我要發表回答

立即登入回答