首页 > 解决方案 > ES6 使用 Vite/Vue 导入电子模块失败

问题描述

我正在尝试将电子与最新的 Vite 2/Vue 3 一起使用。我已经设置了电子主文件的两个版本,因此我可以测试和使用开发服务器和构建:

我在新的 BrowserWindow 选项中设置了:

webPreferences: {
   nodeIntegration: true,
   contextIsolation: false,
   enableRemoteModule: true,
   preload: path.join(app.getAppPath(), 'electron.preload.js')
}

该应用程序在开发版和构建版的 Electron 中都可以正常启动,加载所有资产并且没有任何安全错误。但是,当我尝试从项目中的“电子”导入任何模块时,例如:

import electron from 'electron';

我得到错误:

Uncaught TypeError: path.join is not a function
    at node_modules/electron/index.js (index.js:4)

我试图检查path__dirname,看看它们是否在我的项目中工作:

import * as path from 'path';

console.log(path);
console.log(path.join);
console.log(__dirname);

这些确实在 Electron 开发面板中追踪到以下内容:

在此处输入图像描述

如果我尝试以不同的方式导入路径

import path from 'path'
console.log(path);
console.log(path.join);

我得到以下结果:

在此处输入图像描述

无论如何,path.join是未定义的。现在我几乎被困在如何继续下去。

我还可以补充说我想使用 fs-extra,但这也失败了:

import fs from 'fs-extra';

在此处输入图像描述

[编辑:在 webPreferences 中添加了预加载]

标签: javascriptelectronvite

解决方案


推荐阅读