使用JS的import时出现非法字符U+FFFD错误,求排查原因
导入导出报错U+FFFD的原因及解决办法
一、U+FFFD错误的核心原因
U+FFFD是替换字符,本质是文件编码不兼容或者混入了不可见的特殊字符:
- 检查两个JS文件的编码,必须保存为UTF-8无BOM格式。很多编辑器默认会加BOM头,Firefox对带BOM的JS文件解析很容易出这类错误。
- 排查代码里有没有复制粘贴来的隐形特殊字符,比如全角空格、奇怪的换行符。可以用Notepad++这类编辑器开启“显示所有字符”功能,删掉异常字符后重新保存。
二、ES模块语法不匹配(会加剧报错)
你的代码里导出和导入的语法不对应,也是问题之一:
- modal.js用的是命名导出:
export const gamePoint = document.querySelector('#limitPoint'); - main.js却用了默认导入的写法:
import gamePoint from "./modal.js";
两种修正方式选一个就行:
方式1:改导入语法(适配命名导出)
把main.js改成命名导入:
import { gamePoint } from "./modal.js";
方式2:改导出语法(适配默认导入)
把modal.js改成默认导出:
// 替换原来的export行 const gamePoint = document.querySelector('#limitPoint'); export default gamePoint;
三、必加的模块运行条件
别忘了在HTML里引入main.js时,必须加上type="module"属性,否则浏览器不会按ES模块解析代码:
<script type="module" src="main.js"></script>
另外本地测试别直接双击HTML文件,用本地服务器(比如VS Code的Live Server)运行,避免跨域问题。
内容的提问来源于stack exchange,提问作者amin mahjoob
相关产品推荐
相关产品推荐

