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

使用module.exports导出函数报错,改用export default后调用失败求助

问题解决步骤

核心问题分析

你遇到的报错是因为当前环境采用ES模块(ESM)规范,不允许使用CommonJS的module.exports语法;同时你的Interview定义存在错误,不是合法的构造函数,导致new调用后无法找到方法。


方案一:直接导出实例对象(无需构造函数)

修正interview.js代码

原代码中Interview.prototype = ...的写法完全错误,你实际是通过立即执行函数创建了一个包含方法的对象,直接导出这个对象即可:

// ./assets/js/jquery/interview.js
const Interview = (function ($) {
    const collapseLocalStoredElements = function (localStorageId) {
        let collapseItemsIds = localStorage.getItem(localStorageId);
        console.log(collapseItemsIds);
        return collapseItemsIds; // 可选:返回结果供调用者使用
    };

    return {
        collapseLocalStoredElements: collapseLocalStoredElements,
    };
}(jQuery));

export default Interview;

修正App.js代码

ESM规范下不能用require,改用import,且无需new(因为导出的已经是实例对象):

// App.js
import Interview from './js/jquery/interview.js';

// 直接调用方法
console.log(Interview.collapseLocalStoredElements('collapseItemsIds'));

方案二:使用构造函数(支持多实例)

如果需要实例化多个Interview对象,修正构造函数的定义:

修正interview.js代码

// ./assets/js/jquery/interview.js
function Interview($) {
    this.$ = $; // 存储jQuery实例供内部使用
}

// 把方法挂载到原型上
Interview.prototype.collapseLocalStoredElements = function (localStorageId) {
    let collapseItemsIds = localStorage.getItem(localStorageId);
    console.log(collapseItemsIds);
    return collapseItemsIds;
};

export default Interview;

修正App.js代码

// App.js
import Interview from './js/jquery/interview.js';

// 实例化时传入jQuery
const interview = new Interview(jQuery);
console.log(interview.collapseLocalStoredElements('collapseItemsIds'));

环境配置确认

确保项目支持ESM规范:

  • 若为Node.js项目,在根目录package.json中添加:"type": "module"
  • 若为浏览器直接引入,在<script>标签中添加:type="module"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:05:22