lsongdev / node-bluetooth

:large_blue_diamond:đŸ˜¬Bluetooth serial port communication for Node.js
https://npmjs.org/node-bluetooth
Other
197 stars 56 forks source link

cannot read property, ... #23

Closed rtjaden closed 5 years ago

rtjaden commented 5 years ago

Trying this on raspbian. Node v11.2. Using the standard example.

`Found: 30:AE:A4:24:C1:EE with name ESP32test finished Found RFCOMM channel for serial port on ESP32test: 1 /home/pi/node_modules/node-bluetooth/lib/connection.js:13 this.isOpen() && this.port.read((err, chunk) => { ^

TypeError: Cannot read property 'isOpen' of undefined at read (/home/pi/node_modules/node-bluetooth/lib/connection.js:13:12) at new Connection (/home/pi/node_modules/node-bluetooth/lib/connection.js:18:7) at /home/pi/node_modules/node-bluetooth/index.js:19:33 `

lsongdev commented 5 years ago

@rtjaden sorry about that. This is a bug and I already fixed.

adrianmihalko commented 5 years ago

Is this fix present in v.1.2.4?


pi@retropie:~/um34c $ npm install node-bluetooth --save

> node-bluetooth@1.2.4 install /home/pi/um34c/node_modules/node-bluetooth
> node-gyp configure build

make: Entering directory '/home/pi/um34c/node_modules/node-bluetooth/build'
  CXX(target) Release/obj.target/BluetoothSerialPort/src/linux/BluetoothSerialPort.o
  CXX(target) Release/obj.target/BluetoothSerialPort/src/linux/DeviceINQ.o
../src/linux/DeviceINQ.cc: In static member function ‘static void DeviceINQ::EIO_AfterSdpSearch(uv_work_t*)’:
../src/linux/DeviceINQ.cc:139:28: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
     baton->cb->Call(1, argv);
                            ^
In file included from ../src/linux/DeviceINQ.cc:14:0:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/linux/DeviceINQ.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE DeviceINQ::InquireSync(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/linux/DeviceINQ.cc:251:26: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
       found->Call(2, argv);
                          ^
In file included from ../src/linux/DeviceINQ.cc:14:0:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/linux/DeviceINQ.cc:255:27: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
     callback->Call(0, argv);
                           ^
In file included from ../src/linux/DeviceINQ.cc:14:0:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/linux/DeviceINQ.cc: In member function ‘virtual void InquireWorker::HandleOKCallback()’:
../src/linux/DeviceINQ.cc:284:26: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
       found->Call(2, argv);
                          ^
In file included from ../src/linux/DeviceINQ.cc:14:0:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/linux/DeviceINQ.cc:288:27: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
     callback->Call(0, argv);
                           ^
In file included from ../src/linux/DeviceINQ.cc:14:0:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/linux/DeviceINQ.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE DeviceINQ::SdpSearch(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/linux/DeviceINQ.cc:317:38: warning: ‘v8::String::Utf8Value::Utf8Value(v8::Local<v8::Value>)’ is deprecated: Use Isolate version [-Wdeprecated-declarations]
     String::Utf8Value address(info[0]);
                                      ^
In file included from /home/pi/.node-gyp/11.6.0/include/node/v8.h:26:0,
                 from ../src/linux/DeviceINQ.cc:12:
/home/pi/.node-gyp/11.6.0/include/node/v8.h:2992:28: note: declared here
                   explicit Utf8Value(Local<v8::Value> obj));
                            ^
/home/pi/.node-gyp/11.6.0/include/node/v8config.h:326:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
  CXX(target) Release/obj.target/BluetoothSerialPort/src/linux/BTSerialPortBinding.o
../src/linux/BTSerialPortBinding.cc: In static member function ‘static void BTSerialPortBinding::EIO_AfterConnect(uv_work_t*)’:
../src/linux/BTSerialPortBinding.cc:83:32: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
         baton->cb->Call(0, NULL);
                                ^
In file included from ../src/linux/BTSerialPortBinding.cc:14:0:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/linux/BTSerialPortBinding.cc:89:33: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
         baton->ecb->Call(1, argv);
                                 ^
In file included from ../src/linux/BTSerialPortBinding.cc:14:0:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/linux/BTSerialPortBinding.cc: In static member function ‘static void BTSerialPortBinding::EIO_Write(uv_work_t*)’:
../src/linux/BTSerialPortBinding.cc:115:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if (data->result != data->bufferLength) {
         ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
../src/linux/BTSerialPortBinding.cc: In static member function ‘static void BTSerialPortBinding::EIO_AfterWrite(uv_work_t*)’:
../src/linux/BTSerialPortBinding.cc:135:33: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
     data->callback->Call(2, argv);
                                 ^
In file included from ../src/linux/BTSerialPortBinding.cc:14:0:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/linux/BTSerialPortBinding.cc: In static member function ‘static void BTSerialPortBinding::EIO_AfterRead(uv_work_t*)’:
../src/linux/BTSerialPortBinding.cc:207:28: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
     baton->cb->Call(2, argv);
                            ^
In file included from ../src/linux/BTSerialPortBinding.cc:14:0:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/linux/BTSerialPortBinding.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE BTSerialPortBinding::New(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/linux/BTSerialPortBinding.cc:253:38: warning: ‘v8::String::Utf8Value::Utf8Value(v8::Local<v8::Value>)’ is deprecated: Use Isolate version [-Wdeprecated-declarations]
     String::Utf8Value address(info[0]);
                                      ^
In file included from /home/pi/.node-gyp/11.6.0/include/node/v8.h:26:0,
                 from ../src/linux/BTSerialPortBinding.cc:12:
/home/pi/.node-gyp/11.6.0/include/node/v8.h:2992:28: note: declared here
                   explicit Utf8Value(Local<v8::Value> obj));
                            ^
/home/pi/.node-gyp/11.6.0/include/node/v8config.h:326:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/linux/BTSerialPortBinding.cc:255:41: warning: ‘int32_t v8::Value::Int32Value() const’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     int channelID = info[1]->Int32Value();
                                         ^
In file included from /home/pi/.node-gyp/11.6.0/include/node/v8.h:26:0,
                 from ../src/linux/BTSerialPortBinding.cc:12:
/home/pi/.node-gyp/11.6.0/include/node/v8.h:2572:46: note: declared here
   V8_DEPRECATED("Use maybe version", int32_t Int32Value() const);
                                              ^
/home/pi/.node-gyp/11.6.0/include/node/v8config.h:326:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/linux/BTSerialPortBinding.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE BTSerialPortBinding::Read(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/linux/BTSerialPortBinding.cc:383:25: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
         nc->Call(2, argv);
                         ^
In file included from ../src/linux/BTSerialPortBinding.cc:14:0:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
  SOLINK_MODULE(target) Release/obj.target/BluetoothSerialPort.node
  COPY Release/BluetoothSerialPort.node
  CXX(target) Release/obj.target/BluetoothSerialPortServer/src/linux/BluetoothSerialPortServer.o
  CXX(target) Release/obj.target/BluetoothSerialPortServer/src/linux/BTSerialPortBindingServer.o
../src/linux/BTSerialPortBindingServer.cc: In static member function ‘static void BTSerialPortBindingServer::EIO_AfterListen(uv_work_t*)’:
../src/linux/BTSerialPortBindingServer.cc:176:33: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
         baton->ecb->Call(1, argv);
                                 ^
In file included from ../src/linux/BTSerialPortBindingServer.cc:14:0:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/linux/BTSerialPortBindingServer.cc: In static member function ‘static void BTSerialPortBindingServer::TryListenAgain()’:
../src/linux/BTSerialPortBindingServer.cc:199:31: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
       baton->ecb->Call(1, argv);
                               ^
In file included from ../src/linux/BTSerialPortBindingServer.cc:14:0:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/linux/BTSerialPortBindingServer.cc: In static member function ‘static void BTSerialPortBindingServer::EIO_AfterWrite(uv_work_t*)’:
../src/linux/BTSerialPortBindingServer.cc:239:33: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
     data->callback->Call(2, argv);
                                 ^
In file included from ../src/linux/BTSerialPortBindingServer.cc:14:0:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/linux/BTSerialPortBindingServer.cc: In static member function ‘static void BTSerialPortBindingServer::EIO_AfterRead(uv_work_t*)’:
../src/linux/BTSerialPortBindingServer.cc:311:36: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
             baton->cb->Call(2, argv);
                                    ^
In file included from ../src/linux/BTSerialPortBindingServer.cc:14:0:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/linux/BTSerialPortBindingServer.cc:326:28: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
     baton->cb->Call(2, argv);
                            ^
In file included from ../src/linux/BTSerialPortBindingServer.cc:14:0:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/linux/BTSerialPortBindingServer.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE BTSerialPortBindingServer::New(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/linux/BTSerialPortBindingServer.cc:408:70: warning: ‘v8::String::Utf8Value::Utf8Value(v8::Local<v8::Value>)’ is deprecated: Use Isolate version [-Wdeprecated-declarations]
         string propertyName = std::string(*String::Utf8Value(property));
                                                                      ^
In file included from /home/pi/.node-gyp/11.6.0/include/node/v8.h:26:0,
                 from ../src/linux/BTSerialPortBindingServer.cc:12:
/home/pi/.node-gyp/11.6.0/include/node/v8.h:2992:28: note: declared here
                   explicit Utf8Value(Local<v8::Value> obj));
                            ^
/home/pi/.node-gyp/11.6.0/include/node/v8config.h:326:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/linux/BTSerialPortBindingServer.cc:410:75: warning: ‘v8::String::Utf8Value::Utf8Value(v8::Local<v8::Value>)’ is deprecated: Use Isolate version [-Wdeprecated-declarations]
         options[propertyName] = std::string(*String::Utf8Value(optionValue));
                                                                           ^
In file included from /home/pi/.node-gyp/11.6.0/include/node/v8.h:26:0,
                 from ../src/linux/BTSerialPortBindingServer.cc:12:
/home/pi/.node-gyp/11.6.0/include/node/v8.h:2992:28: note: declared here
                   explicit Utf8Value(Local<v8::Value> obj));
                            ^
/home/pi/.node-gyp/11.6.0/include/node/v8config.h:326:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/linux/BTSerialPortBindingServer.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE BTSerialPortBindingServer::Read(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/linux/BTSerialPortBindingServer.cc:618:25: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
         nc->Call(2, argv);
                         ^
In file included from ../src/linux/BTSerialPortBindingServer.cc:14:0:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/linux/BTSerialPortBindingServer.cc: In member function ‘virtual void BTSerialPortBindingServer::ClientWorker::HandleOKCallback()’:
../src/linux/BTSerialPortBindingServer.cc:672:27: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
     callback->Call(1, argv);
                           ^
In file included from ../src/linux/BTSerialPortBindingServer.cc:14:0:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
  SOLINK_MODULE(target) Release/obj.target/BluetoothSerialPortServer.node
  COPY Release/BluetoothSerialPortServer.node
make: Leaving directory '/home/pi/um34c/node_modules/node-bluetooth/build'
npm WARN um34c@1.0.0 No repository field.

+ node-bluetooth@1.2.4
updated 1 package and audited 208 packages in 33.649s
found 0 vulnerabilities

pi@retropie:~/um34c $ sudo ./app.js -a AB:92:78:56:3C:31
Found RFCOMM channel for serial port on :  1
/home/pi/um34c/node_modules/node-bluetooth/lib/connection.js:13
      this.isOpen() && this.port.read((err, chunk) => {
           ^

TypeError: Cannot read property 'isOpen' of undefined
    at read (/home/pi/um34c/node_modules/node-bluetooth/lib/connection.js:13:12)
    at new Connection (/home/pi/um34c/node_modules/node-bluetooth/lib/connection.js:18:7)
    at /home/pi/um34c/node_modules/node-bluetooth/index.js:19:33
lsongdev commented 5 years ago