我使用它来启用组件中的节点访问。
const mainWindow = new BrowserWindow({
height: 600,
width: 800,
webPreferences: {
preload: MAIN_WINDOW_PRELOAD_WEBPACK_ENTRY,
nodeIntegration: true,
contextIsolation: false,
nodeIntegrationInWorker: true,
nodeIntegrationInSubFrames: true,
}
和
const fs = window.require("fs");
访问 fs。它编译并运行良好,但 window.require("fs") 返回“any”,我不仅丢失了自动完成功能,而且代码被标记为红色。 有什么办法可以打字吗
安装节点类型没有帮助
您似乎正在尝试访问 Electron 应用程序中 Node.js 上下文中的
fs
模块。要解决 TypeScript 无法识别 window.require("fs")
的正确类型的问题,您可以使用以下方法:
fs
模块创建类型声明,以帮助 TypeScript 识别其类型。在 .d.ts
文件(例如 electron-types.d.ts
)中,添加以下声明:declare module 'fs' {
const fs: typeof import('fs');
export = fs;
}
fs
而不是 import
导入 window.require
模块:import * as fs from 'fs';
通过这些步骤,TypeScript 现在应该能够识别
fs
模块的正确类型,为您提供自动完成功能并防止类型错误。请记住确保您的 TypeScript 配置 (tsconfig.json
) 允许选择类型声明。
请注意,启用
nodeIntegration
和关闭 contextIsolation
可能会产生安全影响,因此请确保您了解所涉及的风险,并在担心安全问题时考虑采用替代方法。