节点:SerialPort不是构造函数

时间:2018-09-27 16:20:01

标签: node.js linux raspberry-pi

我试图通过节点连接到我的Raspberry pi的串行端口,但是当我运行js文件时,出现此错误:

    var serialport = new SerialPort("/dev/ttyAMA0", {
                 ^

TypeError: SerialPort is not a constructor
    at Object.<anonymous> (/home/pi/exploringrpi/chp13/xbee/nodejs/test.js:12:18)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Function.Module.runMain (module.js:693:10)
    at startup (bootstrap_node.js:191:16)
    at bootstrap_node.js:612:3

节点的版本为8.11.4 serialport的版本为7.0.2

这是代码:

// From the example code at www.npmjs.com/package/xbee-api
var util       = require('util');
var SerialPort = require('serialport').SerialPort;

var xbee_api   = require('xbee-api');
var C          = xbee_api.constants;

var xbeeAPI = new xbee_api.XBeeAPI({
  api_mode: 1
});

var serialport = new SerialPort("/dev/ttyAMA0", {
        baudRate: 115200});
serialport.on("open", function() {
  var frame_obj = {                 // AT Request to be sent to
    type: C.FRAME_TYPE.AT_COMMAND,  // Prepare for an AT command
    command: "NI",                  // Node identifer command
    commandParameter: [],           // No parameters needed
  };
  serialport.write(xbeeAPI.buildFrame(frame_obj));
});

// The data frames are outputted by this function
xbeeAPI.on("frame_object", function(frame) {
    console.log(">>", frame);
});

希望可以为您提供帮助

1 个答案:

答案 0 :(得分:2)

您可能应该在需求行的末尾删除.SerialPort

var SerialPort = require('serialport').SerialPort;

serial port documentation显示了应如何使用,并且末尾未包含.SerialPort

var SerialPort = require('serialport');
var port = new SerialPort('/dev/ttyAMA0', {
  baudRate: /dev/ttyAMA0
});