gpt4 book ai didi

javascript - 类型错误 : x is not a function in Node. js

转载 作者:太空宇宙 更新时间:2023-11-04 02:55:27 25 4
gpt4 key购买 nike

我正在开发一个 Electron 应用程序,我的目标是“拆分”index.js(主进程)文件。目前,我已将与菜单栏相关和与触摸栏相关的代码放入两个单独的文件中,menu.jstouchBar.js。这两个文件都依赖于名为 redir 的函数,该函数位于 index.js 中。每当我尝试激活菜单栏中的 click 事件(该事件依赖于 redir)时,我都会收到错误:

类型错误:redir 不是函数。这也适用于我的 Touch Bar 代码。

这是我的( chop 的)文件:

index.js

const { app, BrowserWindow } = require('electron'); // eslint-disable-line
const initTB = require('./touchBar.js');
const initMenu = require('./menu.js');

...

let mainWindow; // eslint-disable-line

// Routing + IPC
const redir = (route) => {
if (mainWindow.webContents) {
mainWindow.webContents.send('redir', route);
}
};
module.exports.redir = redir;

function createWindow() {
mainWindow = new BrowserWindow({
height: 600,
width: 800,
title: 'Braindead',
titleBarStyle: 'hiddenInset',
show: false,
resizable: false,
maximizable: false,
});

mainWindow.loadURL(winURL);
initMenu();
mainWindow.setTouchBar(initTB);

...

}

app.on('ready', createWindow);

...

menu.js

const redir = require('./index');
const { app, Menu, shell } = require('electron'); // eslint-disable-line

// Generate template
function getMenuTemplate() {
const template = [

...

{
label: 'Help',
role: 'help',
submenu: [
{
label: 'Learn more about x',
click: () => {
shell.openExternal('x'); // these DO work.
},
},

...

],
},
];

if (process.platform === 'darwin') {
template.unshift({
label: 'Braindead',
submenu: [

...

{
label: 'Preferences...',
accelerator: 'Cmd+,',
click: () => {
redir('/preferences'); // this does NOT work
},
}

...

],
});

...

};

return template;
}

// Set the menu
module.exports = function initMenu() {
const menu = Menu.buildFromTemplate(getMenuTemplate());
Menu.setApplicationMenu(menu);
};

我的文件结构很简单 - 所有三个文件都位于同一目录中。

也欢迎任何代码批评;我花了好几个小时绞尽脑汁试图弄清楚这一切。

最佳答案

redir 它不是一个函数,因为您正在导出一个包含 redir 属性的对象,该属性是一个函数。

所以你应该使用:

const { redir } = require('./index.js');

或者这样导出

module.exports = redir

当你这样做时:module.exports.redir = redir;

您正在导出:{ redir: [Function] }

关于javascript - 类型错误 : x is not a function in Node. js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50897066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com