Electron React TypeScript window.require("fs") 返回'any'

问题描述 投票:0回答:1

我使用它来启用组件中的节点访问。

 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”,我不仅丢失了自动完成功能,而且代码被标记为红色。 有什么办法可以打字吗

安装节点类型没有帮助

node.js reactjs typescript electron require
1个回答
0
投票

您似乎正在尝试访问 Electron 应用程序中 Node.js 上下文中的

fs
模块。要解决 TypeScript 无法识别
window.require("fs")
的正确类型的问题,您可以使用以下方法:

  1. 类型声明:为
    fs
    模块创建类型声明,以帮助 TypeScript 识别其类型。在
    .d.ts
    文件(例如
    electron-types.d.ts
    )中,添加以下声明:
declare module 'fs' {
  const fs: typeof import('fs');
  export = fs;
}
  1. 导入 fs:使用
    fs
    而不是
    import
    导入
    window.require
    模块:
import * as fs from 'fs';

通过这些步骤,TypeScript 现在应该能够识别

fs
模块的正确类型,为您提供自动完成功能并防止类型错误。请记住确保您的 TypeScript 配置 (
tsconfig.json
) 允许选择类型声明。

请注意,启用

nodeIntegration
和关闭
contextIsolation
可能会产生安全影响,因此请确保您了解所涉及的风险,并在担心安全问题时考虑采用替代方法。

© www.soinside.com 2019 - 2024. All rights reserved.