You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Electron项目自定义TypeScript类调用isRunning方法报TypeError错误

排查TypeError: roadHouse.isRunning is not a function的问题

我来帮你一步步拆解这个问题,结合你给出的代码和配置,主要有几个核心原因和对应的解决办法:

1. 子类构造函数未调用super()

你的RoadHouse类继承了Object,在TypeScript中有个硬性规则:只要子类自定义了构造函数,必须先调用super()初始化父类原型链。你现在的构造函数里完全没加这一行,会导致类的方法无法正确挂载到实例上,最终出现isRunning is not a function的异常。

修复方法:

修改RoadHouse的构造函数,补上super()调用:

export class RoadHouse extends Object {
    // ... 其他属性定义
    constructor(private _message: String = "", private _prompt: String = "") {
        super(); // 必须添加这一行,初始化父类
        // this.setStatus(_message);
    }
    // ... 其他方法
}

2. 未正确导入RoadHouse类

你的main.ts直接实例化了RoadHouse,但没有添加对应的导入语句。如果跳过导入步骤,TypeScript会把RoadHouse当作全局变量处理(或者编译时忽略类型校验),最终实例化的对象根本不是RoadHouse类的实例,自然没有isRunning方法。

修复方法:

假设你的RoadHouse类定义在同目录的roadhouse.ts文件中,在main.ts顶部添加导入语句:

import { RoadHouse } from './roadhouse';

var roadHouse:RoadHouse = new RoadHouse("Hello");
console.log("Is running:" + roadHouse.isRunning());

3. package.json入口配置错误

你的package.json里main字段设置为index.js,但你的编译入口是main.ts,编译后生成的是main.js。Electron启动时会读取main字段指定的文件,入口不对的话,代码可能根本没正确执行,或者实例化逻辑完全走偏。

修复方法:

修改package.json的main字段为编译后的入口文件:

{
    "name": "typescript-electron",
    "version": "1.0.0",
    "description": "Electron and Typescript",
    "main": "main.js", // 改成main.js
    "scripts": {
        "test": "start electron ."
    },
    "devDependencies": {
        "electron": "^5.0.3"
    }
}

4. 补充:确保TypeScript编译所有文件

检查你的tsconfig.json,如果没有include字段,tsc可能不会编译所有.ts文件。添加include字段确保所有代码都被编译:

{
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "sourceMap": true,
        "strict": true,
        "esModuleInterop": true,
        "strictNullChecks":false
    },
    "include": ["*.ts"] // 确保所有.ts文件被编译
}

最后验证步骤

  1. 执行你的Build Task(tsc),确认生成了main.js和roadhouse.js文件;
  2. 运行npm run test启动Electron,检查控制台输出是否正常。

内容的提问来源于stack exchange,提问作者1.21 gigawatts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:13:09