如何解决VSCode报错"ENOENT: no such file or directory"?
报错含义说明
ENOENT是「Error NO ENTry」的缩写,属于系统级错误码,含义是指定路径下不存在目标文件或目录。你遇到的完整报错翻译为:调试器无法读取webgazer.js对应的源码映射文件,在给定路径下找不到webgazer.js.map文件。
这个报错属于调试辅助类提示,不会影响你的代码正常运行,只是会降低调试阶段的便利性。
.map(源码映射)文件定义
.map文件是源码映射文件,作用是建立压缩/编译后的JS文件和原始未加工源码的对应关系。正常生产环境的JS代码都会被压缩混淆,调试的时候如果有对应的.map文件,就能直接定位到原始源码的行列位置,而不是面对压缩后的无意义代码。如果没有调试第三方库源码的需求,完全可以不用这类文件。
解决方法
按照操作成本从低到高排序,按需选择即可:
- 方案1:直接忽略报错
该提示不影响代码运行,不需要调试webgazer底层源码的情况下,不用做任何处理,不影响你编写自身业务逻辑。 - 方案2:关闭VSCode调试器的source map读取功能
如果你不想每次调试都看到该提示,可以修改调试配置:
打开项目根目录下的.vscode/launch.json文件,在对应调试配置项中添加"sourceMaps": false,参考配置如下:
修改后重启调试即可消除该报错。{ "version": "0.2.0", "configurations": [ { "type": "chrome", "request": "launch", "name": "启动Chrome调试", "url": "http://localhost:5500", "webRoot": "${workspaceFolder}", "sourceMaps": false } ] } - 方案3:生成并添加.map文件
仅在你需要调试webgazer源码时才需要操作该方案,步骤如下:- 优先查找jsPsych官方完整发布包,官方包一般会附带所有依赖对应的.map文件,直接将
webgazer.js.map放到和webgazer.js同级的目录即可。 - 如果找不到官方的映射文件,可以自行通过构建工具生成:
- 首先安装Node.js运行环境,之后全局安装压缩工具terser:
npm install -g terser - 进入
webgazer.js所在的文件夹,执行命令:terser webgazer.js --source-map "filename='webgazer.js.map'" -o webgazer.js - 生成的
webgazer.js.map会自动保存在当前目录,重启调试即可正常读取映射文件。
- 优先查找jsPsych官方完整发布包,官方包一般会附带所有依赖对应的.map文件,直接将
内容的提问来源于stack exchange,提问作者Guzzly Puzzly
相关产品推荐
相关产品推荐

