javascript - ES6 使用 Vite/Vue 导入电子模块失败
问题描述
我正在尝试将电子与最新的 Vite 2/Vue 3 一起使用。我已经设置了电子主文件的两个版本,因此我可以测试和使用开发服务器和构建:
- 使用 loadURL加载 localhost:3000 (来自npm run dev )的开发版本
- 另一个版本使用 loadFile从dist文件夹加载构建版本(来自npm run build)
我在新的 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 中添加了预加载]
解决方案
推荐阅读
- android - 如何在 nativescript 应用程序中捕获 android dispatchKeyEvent?
- python-3.x - 如何在python所有脚本上循环?
- c# - ComboBox.SelectedValue 在表单的构造函数中为 null
- r - 使用 dplyr 删除至少一个 NA 的所有行的 R 函数不起作用
- python - 在 While 循环中创建停止 - Python
- pytorch - 如何从 pytorch 模块获取子模块序列?
- karate - 空手道 - 访问请求的变量就像响应一样
- ios - Flutter iOS 应用程序被拒绝,因为“NSLocationAlwaysUsageDescription”没有目的字符串,但该应用程序不使用位置服务
- html - 使用引导程序创建水平导航栏
- javascript - 如何使堆叠的多个div的宽度动态调整为其中最长的内容?