node.js - Running electron på Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at lave et projekt, jeg kodede på Mac OS kører i Windows, og det bruger Electron. Jeg prøvede at køre det som dette:


node node\_modules.binelectron


og det virker ikke:


module.js:471
    throw err;
    ^

Error: Cannot find module './'
    at Function.Module.\_resolveFilename (module.js:469:15)
    at Function.Module.\_load (module.js:417:25)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (C:UserspupenoDocumentsProjectX
ode\_modules.binelectron:3:16)
    at Module.\_compile (module.js:570:32)
    at Object.Module.\_extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module.\_load (module.js:438:3)


Webpack virker på den måde:


>node .
ode\_modules.binwebpack --version
Hash: a9840b6c5503dc0a037c
Version: webpack 1.13.3


Eventuelle ideer hvad er problemet med Electron og/eller hvordan man retter det? Skriften indeholder dette:


#!/usr/bin/env node

var electron = require('./')

var proc = require('child\_process')

var child = proc.spawn(electron, process.argv.slice(2), {stdio: 'inherit'})
child.on('close', function (code) {
  process.exit(code)
})

Bedste reference


Du kan køre Electron på Windows som sådan:


> node\_modules.binelectron.cmd


Men da du vil udvikle både MacOS og Windows, skal du bare tilføje et NPM script til din package.json:


"scripts": {
    "app": "electron ."
}


Derefter kan du bruge den samme kommando til at køre den på ethvert OS:


> npm run app

Andre referencer 1


Problemet var, at da jeg kopierede min kode fra en Mac til en Win 10-maskine, fordi jeg havde ufærdige ændringer, ville jeg ikke begå det. Jeg kopierede også node\_modulesne, så jeg havde Mac/Linux/Unix-dem, der indeholder filer der har et almindeligt navn i .bin og bruger shebang til at ringe til den rigtige tolk.


Når jeg slette node\_modules og jeg installerede igen, i .bin fik jeg disse almindelige navnefiler, men også .cmd-filer. Sletten elektron ser sådan ud:


#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\,/,g')")

case `uname` in
    *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac

if [ -x "$basedir/node" ]; then
  "$basedir/node"  "$basedir/../electron/cli.js" "$@"
  ret=$?
else 
  node  "$basedir/../electron/cli.js" "$@"
  ret=$?
fi
exit $ret


mens electron.cmd ser sådan ud:


@IF EXIST "\%~dp0
ode.exe" (
  "\%~dp0
ode.exe"  "\%~dp0..electroncli.js" \%*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=\%PATHEXT:;.JS;=;\%
  node  "\%~dp0..electroncli.js" \%*
)