Arun Krishnan
Arun Krishnan

Reputation: 271

Issue Building Electron App with Opencv4nodejs on Windows 10

I have built an electron app that uses tensorflow and opencv4nodejs.

The app works well when I use npm start. However, when I try to build my app, it bombs out with the following error:

Build Error

The issue here is that I have not built the opencv4nodejs from source. Instead I manually installed opencv and then disabled autobuild to install it for my app.

From the error, I see that it is looking for a lib directory under opencv-build but it is simply not there.

Is there a way to NOT have anything rebuilt since I already have all the modules built for Windows 10?

Am sure this is something simple but have run up against a brick wall for this.

Here is my package.json `

{
  "name": "myApp",
  "version": "0.0.1",
  "description": "My Electron App",
  "main": "main.js",
  "license": "abc",
  "private": true,
  "scripts": {
    "postinstall": "install-app-deps",
    "start": "electron .",
    "build": "electron-packager . nGage --platform win32 --arch x64 --out dist/ --icon image/nGage-Icon.ico --overwrite",
    "setup": "electron-installer-windows --src dist/nGage-win32-x64/ --dest dist/installers/ --config config.json --overwrite",
    "dist": "build"
  },
  "build": {
    "appId": "com.electron.app",
    "publish": [
      {
        "provider": "generic",
        "url": "abc"
      }
    ],
    "win": {
      "target": [
        {
          "target": "nsis",
          "arch": [
            "x64"
          ]
        }
      ],
      "certificateFile": "cert/abc",
      "certificatePassword": "xyz"
    },
    "asar": false,
    "nsis": {
      "oneClick": true,
      "perMachine": false,
      "artifactName": "${productName}-Setup-${version}-x64.${ext}"
    }
  },
  "author": {
    "name": "ABC",
    "email": "[email protected]",
    "url": "www.abc.com"
  },
  "devDependencies": {
    "electron": "^9.0.3",
    "electron-builder": "^19.53.6",
    "electron-installer-windows": "^0.2.0",
    "electron-packager": "^8.5.2",
    "electron-winstaller": "^2.5.2",
    "grunt-electron-installer": "^2.1.0"
  },
  "dependencies": {
    "@tensorflow/tfjs": "^2.0.0",
    "@tensorflow/tfjs-node": "^2.0.0",
    "auto-launch": "^5.0.1",
    "cron": "^1.2.1",
    "electron-config": "^0.2.1",
    "electron-positioner": "^3.0.0",
    "electron-squirrel-startup": "^1.0.0",
    "electron-updater": "^2.19.0",
    "electron-window": "^0.8.1",
    "graceful-fs": "^4.1.11",
    "homedir": "^0.6.0",
    "https": "^1.0.0",
    "opencv4nodejs": "^5.6.0",
    "request": "^2.88.2",
    "url": "^0.11.0",
    "username": "^3.0.0",
    "util": "^0.12.3",
    "windows-build-tools": "^5.2.2"
  }
}

` Any insights will be most helpful!

Thanks, Arun

Upvotes: 2

Views: 1357

Answers (1)

Arun Krishnan
Arun Krishnan

Reputation: 271

So I realised that I needed to set the following environment variables before doing npm run build

since I had used them while build opencv4nodejs. Here is what I have taken from the the opencv4nodejs site.

`

Installing OpenCV Manually
Setting up OpenCV on your own will require you to set an environment variable to prevent the auto build script to run:

# linux and osx:
export OPENCV4NODEJS_DISABLE_AUTOBUILD=1
# on windows:
set OPENCV4NODEJS_DISABLE_AUTOBUILD=1
Windows
You can install any of the OpenCV 3 or OpenCV 4 releases manually or via the Chocolatey package manager:

# to install OpenCV 4.1.0
choco install OpenCV -y -version 4.1.0
Note, this will come without contrib modules. To install OpenCV under windows with contrib modules you have to build the library from source or you can use the auto build script.

Before installing opencv4nodejs with an own installation of OpenCV you need to expose the following environment variables:

OPENCV_INCLUDE_DIR pointing to the directory with the subfolder opencv2 containing the header files
OPENCV_LIB_DIR pointing to the lib directory containing the OpenCV .lib files
Also you will need to add the OpenCV binaries to your system path:

add an environment variable OPENCV_BIN_DIR pointing to the binary directory containing the OpenCV .dll files
append ;%OPENCV_BIN_DIR%; to your system path variable

`

Upvotes: 2

Related Questions