手动加载应用依赖

警告

重要提示:此方法仅能在开发环境中使用。因为在应用程序的发布版本中,app 目录应该自包含所有使用的文件。

如果在开发环境中,您的应用主进程(由 electron 执行)不在 /app 文件夹内运行。您可能需要手动加载 /app 依赖。因为应用依赖位于 /app/node_modules,而您的主进程在不同的目录中运行,默认情况下无法访问该目录。

为了避免在开发环境的 package.json 中重复应用依赖,可以采用如下方法让 electron 主进程手动加载应用依赖

// given this file is: /src/browser/main.js

const path = require('path')
const devMode = (process.argv || []).indexOf('--dev') !== -1

// load the app dependencies in dev mode
if (devMode) {
  const PATH_APP_NODE_MODULES = path.join(__dirname, '..', '..', 'app', 'node_modules')
  const Module = require('module')

  // for electron 16 or lower
  Module.globalPaths.push(PATH_APP_NODE_MODULES)

  // for electron 17 or higher
  const nodeModulePaths = Module._nodeModulePaths
  Module._nodeModulePaths = (from) =>
    nodeModulePaths(from).concat([PATH_APP_NODE_MODULES])
}