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

在同一JS文件中使用import与普通JS代码时函数未定义的解决方法

问题原因与解决方法

当你在JS文件中使用import语句时,该文件会被浏览器当作ES模块处理。ES模块拥有独立的作用域,模块内定义的函数(比如FunctionOfMainJs)默认不会挂载到全局window对象上;同时如果HTML中引用脚本时未声明type="module",浏览器会直接报错无法解析import语法,进而导致后续函数未被定义。

具体解决步骤

1. 正确声明模块类型

在HTML中引用main.js时,必须添加type="module"属性,否则浏览器无法识别ES模块语法:

<script type="module" src="main.js"></script>

2. 仅内部调用函数(无需全局暴露)

如果只是在main.js内部调用FunctionOfMainJs,只要确保脚本以模块方式加载,你的原代码本身可以正常执行——之前的报错大概率是因为没加type="module"导致import解析失败,进而函数未被定义。

3. 需要外部调用函数(需全局暴露)

如果要在模块外部(比如HTML内联脚本、其他非模块脚本)调用FunctionOfMainJs,需要主动将函数挂载到全局window对象:
修改main.js代码:

import {CreateDropDown} from "./asset/js/customdropdown.js";

new CreateDropDown([{"ImagePath":null,"OptionValue":"text1"}],"Container");

function FunctionOfMainJs(){
    alert("hey guys");
}

// 将函数暴露到全局作用域
window.FunctionOfMainJs = FunctionOfMainJs;

// 内部正常调用
FunctionOfMainJs();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:15:35