Search code examples
serverarduinoserial-port

Unable to install p5.serialserver on a mac


I have been trying to install p5.serial server on a mac for 2 days to no avail. I have tried everything I can think of to try and download p5.serialserver on a mac. I used all three methods suggested in the documentation (https://github.com/p5-serial/p5.serialport) which were

  1. clone the repository and run

    npm install

This failed when I ran npm install and I was not able to proceed to the next step. Then I tried

sudo npm install -g p5.serialserver

and

npm install p5.serialserver

It keeps giving me errors that 3 arguments are required, but 2 were provided like below:

npm ERR! /path/path/path/node-gyp/17.4.0/include/node/v8-object.h:247:37: note: candidate function not viable: requires 3 arguments, but 2 were provided
npm ERR!   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, uint32_t index,

Then the following:

npm ERR!                                     ^
npm ERR! 4 errors generated.
npm ERR! make: *** [Release/obj.target/bindings/src/serialport.o] Error 1
npm ERR! gyp ERR! build error 
npm ERR! gyp ERR! stack Error: `make` failed with exit code: 2
npm ERR! gyp ERR! stack     at ChildProcess.onExit (/path/path/path/.nvm/versions/node/v17.4.0/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:520:28)
npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:291:12)
npm ERR! gyp ERR! System Darwin 21.1.0
npm ERR! gyp ERR! command "/path/path/path/.nvm/versions/node/v17.4.0/bin/node" "/path/path/path/.nvm/versions/node/v17.4.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
npm ERR! gyp ERR! cwd /path/path/path/.nvm/versions/node/v17.4.0/lib/node_modules/p5.serialserver/node_modules/@serialport/bindings
npm ERR! gyp ERR! node -v v17.4.0
npm ERR! gyp ERR! node-gyp -v v8.4.1
npm ERR! gyp ERR! not ok

I assume this is because there are updated required and some of the packages required have changed, but I'm not sure which packages or how to resolve this. I tried downgrading the version of node I was using, but that did not work. If anyone has any more suggestions please inform.

Update: I ran p5.serialserver at https://npm.runkit.com/p5.serialserver. It gave more errors based on what is in the module. Does that mean that it is not possible to use? Errors linked here: https://runkit.com/embed/9rlymlps3vcx


Solution

  • I have finally figured this out after a professor sent resources to explain the error. Basically, you need to download to nodev12.20.2 in order to use p5 serial (probably because of outdated dependencies)

    I did this by running the following in the terminal. You can use nvm to run different versions of node, so I suggest using it to install node if you didn't already:

    nvm install 12.20.2
    nvm use 12.20.2
    node -v
    

    Confirm that the terminal is running node v12.20.2

    sudo npm install serialport --unsafe-perm -g
    sudo npm install ws -g
    sudo npm install p5.serialserver --unsafe-perm -g
    

    Then just run the following to start the server:

    p5serial
    

    And it should start the server. Hope this helps someone else because this was driving me crazy.