在Windows上运行电子

时间:2017-01-21 20:39:24

标签: node.js windows electron

我试图制作一个我在Mac OS上编码的项目在Windows上运行并使用Electron。我尝试像这样运行它:

node node_modules\.bin\electron

并且它不起作用:

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:\Users\pupeno\Documents\ProjectX\node_modules\.bin\electron: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以这种方式运作:

>node .\node_modules\.bin\webpack --version
Hash: a9840b6c5503dc0a037c
Version: webpack 1.13.3

任何想法Electron的问题和/或如何修复它?该脚本包含:

#!/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)
})

2 个答案:

答案 0 :(得分:1)

您可以在Windows上运行Electron:

> node_modules\.bin\electron.cmd

但是,既然你想在macOS和Windows上进行开发,你应该只为你的package.json添加一个NPM脚本:

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

然后您可以使用相同的命令在任何操作系统上运行它:

> npm run app

答案 1 :(得分:0)

问题在于,当我将代码从Mac复制到Win 10机器时,因为我还没有完成更改,我也不想提交,我还复制了node_modules,所以我有了Mac / Linux / Unix包含.bin中具有普通名称的文件,并使用shebang调用正确的解释器。

一旦我删除了node_modules并重新安装,在.bin中,我得到了那些普通的名字文件,还有.cmd文件。普通电子看起来像这样:

#!/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

虽然electron.cmd看起来像这样:

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