node.js 需要返回一个字符串而不是模块对象

jia*_*zhe 7 node.js electron

我正在尝试制作一个电子应用程序。然而,我的工作一开始就停滞不前:require关键字给了我一个字符串,而不是模块对象。

electron = require('electron')
console.log(electron)
Run Code Online (Sandbox Code Playgroud)

它打印:

/path/to/my/project/node_modules/_electron@1.6.11@electron/dist/electron
Run Code Online (Sandbox Code Playgroud)

,完全不能作为模块使用。

相比之下,如果我导入一个内置模块或另一个 npm 安装的模块:

fs = require('fs')
console.log(fs)

mkdirp = require('mkdirp')
console.log(mkdirp)
Run Code Online (Sandbox Code Playgroud)

它打印对象层次结构,包括变量和函数。

以下是选举目录的内容,不知道是否健康:

$ ls node_modules/electron
appveyor.yml  cli.js  CONTRIBUTING.md  dist  electron.d.ts  index.js  install.js  issue_template.md  LICENSE  node_modules  package.json  path.txt  README.md  test
Run Code Online (Sandbox Code Playgroud)

And*_*ers 6

这是预期的行为。您需要使用电子(在 node_modules/.bin 中)而不是普通节点来运行您的应用程序。

这是官方教程在 package.json 中使用的内容:

"scripts": {
  "start": "electron ."
}
Run Code Online (Sandbox Code Playgroud)

这最终调用电子CLI,它使用require找到路径electron.exe(字符串中,你发现),并产卵,当运行应用程序一个子进程。