jperkin / node-rpio

Raspberry Pi GPIO library for node.js
857 stars 123 forks source link

Raspberry Pi 3 and electron #91

Closed Miticcio closed 5 years ago

Miticcio commented 5 years ago

I installed node-rpio without a problem and it work fine. When I use it with electronjs I got an error:

> miao@1.0.0 start /home/pi/Documents/miao
> electron .

/home/pi/Documents/miao/node_modules/electron/dist/electron .: symbol lookup error: /home/pi/Documents/miao/node_modules/rpio/build/Release/rpio.node: undefined symbol: _ZN2v816FunctionTemplate3NewEPNS_7IsolateEPFvRKNS_20FunctionCallbackInfoINS_5ValueEEEENS_5LocalIS4_EENSA_INS_9SignatureEEEiNS_19ConstructorBehaviorENS_14SideEffectTypeE

This Is the package.json:

{
  "name": "miao",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "electron ."
  },
  "author": "",
  "license": "ISC",
  "devDependecies": {
    "rpio": "^1.0.11"
  },
  "dependencies": {
    "electron": "^3.0.10",
    "rpio": "^1.0.11"
  }
}

Version:

node -v v10.14.1
npm -v 6.4.1

index.js:

var rpio = require('rpio');
const { app, BrowserWindow } = require("electron");
app.disableHardwareAcceleration();
// Handle creating/removing shortcuts on Windows when installing/uninstalling.

// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
let mainWindow;

const createWindow = () => {
  // Create the browser window.
  mainWindow = new BrowserWindow({
    width: 480,
    height: 800,
    resizable: false,
    kiosk: false
  });

  mainWindow.setMenu(null);

  // and load the index.html of the app.
  mainWindow.loadURL(`file://${__dirname}/index.html`);

  // Open the DevTools.
  mainWindow.webContents.openDevTools();

  // Emitted when the window is closed.
  mainWindow.on("closed", () => {
    // Dereference the window object, usually you would store windows
    // in an array if your app supports multi windows, this is the time
    // when you should delete the corresponding element.
    mainWindow = null;
  });
};

// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.on("ready", createWindow);

// Quit when all windows are closed.
app.on("window-all-closed", () => {
  // On OS X it is common for applications and their menu bar
  // to stay active until the user quits explicitly with Cmd + Q
  if (process.platform !== "darwin") {
    app.quit();
  }
});

app.on("activate", () => {
  // On OS X it's common to re-create a window in the app when the
  // dock icon is clicked and there are no other windows open.
  if (mainWindow === null) {
    createWindow();
  }
});

// In this file you can include the rest of your app's specific main process
// code. You can also put them in separate files and import them here.

This error always show when I require('rpio'); In the devConsole too.

How to reproduce: Create a simple electronjs project on the rpi3 and add node-rpio in dependencies. In devConsole or in any .js file require rpio.

jperkin commented 5 years ago

You can't use this module in a browser context, sorry. It needs direct access to the hardware.