问题
I am developing a project with Electron and serialport.
The serialport library doesn't work automatically. Searching in the Readme.md, I figure out that is needed to recompile the library for the NodeJS version of electron, using the electron-rebuild library. (Inserting this script in the package.json: "install": "electron-rebuild"
).
The electron-rebuild require a python installed in the computer, so I have installed through windows-build-tools. (installed globally)
So now when I run the command npm install
I receive this error:
× Rebuild Failed
An unhandled error occurred inside electron-rebuild
gyp ERR! configure error
gyp ERR! stack Error: spawn C:\Users\Leonardo Guimar�es\.windows-build-tools\python27\python.exe ENOENT
gyp ERR! stack at exports._errnoException (util.js:1022:11)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
gyp ERR! stack at onErrorNT (internal/child_process.js:359:16)
gyp ERR! stack at _combinedTickCallback (internal/process/next_tick.js:74:11)
gyp ERR! stack at process._tickCallback (internal/process/next_tick.js:98:9)
gyp ERR! System Windows_NT 10.0.14393
gyp ERR! command "D:\\nodejs\\node.exe" "D:\\ElectronWorkspace\\PATH_TO_App\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--target=1.5.0" "--arch=x64" "--dist-url=https://atom.io/download/electron" "--build-from-source" "--module_name=serialport" "--module_path=D:\\ElectronWorkspace\\PATH_TO_App\\node_modules\\serialport\\build\\Release" "--host=https://github.com/EmergingTechnologyAdvisors/node-serialport/releases/download/4.0.7"
gyp ERR! cwd D:\ElectronWorkspace\PATH_TO_App\node_modules\serialport
gyp ERR! node -v v6.9.4
gyp ERR! node-gyp -v v3.5.0
gyp ERR! not ok
Failed with exit code: 1
Error: gyp ERR! configure error
gyp ERR! stack Error: spawn C:\Users\Leonardo Guimar�es\.windows-build-tools\python27\python.exe ENOENT
gyp ERR! stack at exports._errnoException (util.js:1022:11)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
gyp ERR! stack at onErrorNT (internal/child_process.js:359:16)
gyp ERR! stack at _combinedTickCallback (internal/process/next_tick.js:74:11)
gyp ERR! stack at process._tickCallback (internal/process/next_tick.js:98:9)
gyp ERR! System Windows_NT 10.0.14393
gyp ERR! command "D:\\nodejs\\node.exe" "D:\\ElectronWorkspace\\PATH_TO_App\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--target=1.5.0" "--arch=x64" "--dist-url=https://atom.io/download/electron" "--build-from-source" "--module_name=serialport" "--module_path=D:\\ElectronWorkspace\\PATH_TO_App\\node_modules\\serialport\\build\\Release" "--host=https://github.com/EmergingTechnologyAdvisors/node-serialport/releases/download/4.0.7"
gyp ERR! cwd D:\ElectronWorkspace\PATH_TO_App\node_modules\serialport
gyp ERR! node -v v6.9.4
gyp ERR! node-gyp -v v3.5.0
gyp ERR! not ok
Failed with exit code: 1
at SafeSubscriber.obs.subscribe.e [as _error] (D:\ElectronWorkspace\PATH_TO_App\node_modules\spawn-rx\lib\index.js:311:43)
at SafeSubscriber.__tryOrUnsub (D:\ElectronWorkspace\PATH_TO_App\node_modules\rxjs\Subscriber.js:223:16)
at SafeSubscriber.error (D:\ElectronWorkspace\PATH_TO_App\node_modules\rxjs\Subscriber.js:184:26)
at Subscriber._error (D:\ElectronWorkspace\PATH_TO_App\node_modules\rxjs\Subscriber.js:128:26)
at Subscriber.error (D:\ElectronWorkspace\PATH_TO_App\node_modules\rxjs\Subscriber.js:102:18)
at MapSubscriber.Subscriber._error (D:\ElectronWorkspace\PATH_TO_App\node_modules\rxjs\Subscriber.js:128:26)
at MapSubscriber.Subscriber.error (D:\ElectronWorkspace\PATH_TO_App\node_modules\rxjs\Subscriber.js:102:18)
at SafeSubscriber.pipesClosed.subscribe [as _next] (D:\ElectronWorkspace\PATH_TO_App\node_modules\spawn-rx\lib\index.js:284:42)
at SafeSubscriber.__tryOrSetError (D:\ElectronWorkspace\PATH_TO_App\node_modules\rxjs\Subscriber.js:232:16)
at SafeSubscriber.next (D:\ElectronWorkspace\PATH_TO_App\node_modules\rxjs\Subscriber.js:174:27)
at Subscriber._next (D:\ElectronWorkspace\PATH_TO_App\node_modules\rxjs\Subscriber.js:125:26)
at Subscriber.next (D:\ElectronWorkspace\PATH_TO_App\node_modules\rxjs\Subscriber.js:89:18)
at ReduceSubscriber._complete (D:\ElectronWorkspace\PATH_TO_App\node_modules\rxjs\operator\reduce.js:116:30)
at ReduceSubscriber.Subscriber.complete (D:\ElectronWorkspace\PATH_TO_App\node_modules\rxjs\Subscriber.js:114:18)
at MergeAllSubscriber._complete (D:\ElectronWorkspace\PATH_TO_App\node_modules\rxjs\operator\mergeAll.js:94:30)
at MergeAllSubscriber.Subscriber.complete (D:\ElectronWorkspace\PATH_TO_App\node_modules\rxjs\Subscriber.js:114:18)
How can I compile this library? Thanks in advance!
回答1:
I managed to compile serialport
on Windows 10 x64 for Electron 1.4.14 following these steps. This worked a week ago so I'm not quite sure if something had changed in the meantime.
I needed Windows 10 SDK, C++ Common Tools (included in Visual Studio Community 2015) for electron-rebuild
first. Python 2.x is required, too. Then I installed electron-rebuild
and serialport
using npm (use --save-dev option).
Then I deleted files in the node_modules/serialport/build/Release/*
in my application folder and finally go to the folder node_modules/.bin
in your project and run the command:
electron-rebuild -v 1.4.14 -e node_modules/electron-prebuilt -f
and the files I deleted appeared again but rebuilt for the actual version. Be sure to specify the correct Electron version you're using.
回答2:
Install windows build tools
npm install --global --production windows-build-tools
or
npm --add-python-to-path='true' --debug install --global windows-build-tools
then set path variables
setx PYTHON "%USERPROFILE%\.windows-build-tools/python27/python.exe"
set PYTHON
set PYTHON helps you check if its set up correctly.
This is not enough install electron rebuild globally in your project files
npm install -g electron-prebuilt
npm install --save serialport
We have to rebuild serialport to work with electron. To do this, we need to install electron-rebuild:
npm install --save-dev electron-rebuild
The last step is to run electron-rebuild, once again, just in the root >directory of the app:
./node_modules/.bin/electron-rebuild
回答3:
This works for me.
npm config set python /path/to/executable/python2.7
And then try.
npm install
来源:https://stackoverflow.com/questions/41980175/error-in-electron-rebuild-serialport-on-windows