相关疑难解决方法(0)

如何在 Electron 中正确使用 preload.js

我正在尝试fs在我的renderer流程中使用 Node 模块(在本例中为),如下所示:

// main_window.js
const fs = require('fs')

function action() {
    console.log(fs)
}
Run Code Online (Sandbox Code Playgroud)

注意:action当我按下main_window.

但这给出了一个错误:

Uncaught ReferenceError: require is not defined
    at main_window.js:1
Run Code Online (Sandbox Code Playgroud)

我可以解决这个问题,正如这个接受的答案所建议的那样,通过main.js在初始化时将这些行添加到我的main_window

// main.js
main_window = new BrowserWindow({
    width: 650,
    height: 550,
    webPreferences: {
        nodeIntegration: true
    }
})
Run Code Online (Sandbox Code Playgroud)

但是,根据 docs,这不是最好的做法,我应该创建一个preload.js文件并在那里加载这些 Node 模块,然后在我的所有renderer进程中使用它。像这样:

main.js

main_window = new BrowserWindow({
    width: 650,
    height: 550,
    webPreferences: {
        preload: path.join(app.getAppPath(), 'preload.js') …
Run Code Online (Sandbox Code Playgroud)

javascript node.js electron

66
推荐指数
3
解决办法
4万
查看次数

在定义文件中导入类(*d.ts)

我想扩展Express Session类型以允许在会话存储中使用我的自定义数据.我有一个对象req.session.user是我班级的一个实例User:

export class User {
    public login: string;
    public hashedPassword: string;

    constructor(login?: string, password?: string) {
        this.login = login || "" ;
        this.hashedPassword = password ? UserHelper.hashPassword(password) : "";
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我创建了我的own.d.ts文件以将定义与现有的快速会话类型合并:

import { User } from "./models/user";

declare module Express {
    export interface Session {
        user: User;
    }
}
Run Code Online (Sandbox Code Playgroud)

但它根本不起作用 - VS Code和tsc看不到它.所以我用简单的类型创建了测试定义:

declare module Express {
    export interface Session {
        test: string;
    }
}
Run Code Online (Sandbox Code Playgroud)

并且测试字段工作正常,因此导入导致问题.

我也尝试添加/// <reference path='models/user.ts'/>导入但是tsc没有看到User类 - …

typescript typescript-typings

50
推荐指数
4
解决办法
2万
查看次数