如何解决babel-plugin-require-context-hook的声明文件缺失及__requireContext未定义报错?
解决方案
解决 ReferenceError: __requireContext is not defined 报错
这个错误说明require-context-hook插件未正确初始化上下文函数,需手动在入口文件完成注册:
- 在
src/server/index.js的最顶部添加以下代码:
这一步会全局初始化const registerRequireContextHook = require('babel-plugin-require-context-hook/register'); registerRequireContextHook();__requireContext函数,让require.context能够正常工作。 - 清理重复的babel配置:你的
package.json脚本和.babelrc同时配置了require-context-hook插件,容易引发冲突。建议保留.babelrc的配置,删除脚本中的插件参数,最终scripts修改为:"scripts": { "server": "nodemon --exec babel-node --watch src/server src/server/index.js" }
解决 Could not find a declaration file for module 'babel-plugin-require-context-hook/register' 报错
你虽未使用TypeScript,但VS Code等编辑器默认启用TypeScript类型检查服务,会因模块无类型声明文件触发该报错,可通过以下方式解决:
- 方式一:添加类型声明文件
在项目根目录新建typings/babel-plugin-require-context-hook.d.ts文件,写入:
编辑器会自动识别该文件,消除报错。declare module 'babel-plugin-require-context-hook/register' { export default function register(): void; } - 方式二:忽略单模块类型检查
在引入模块的代码上方添加注释:
这种方式无需额外文件,适合快速处理。// @ts-ignore const registerRequireContextHook = require('babel-plugin-require-context-hook/register'); registerRequireContextHook(); - 方式三:全局关闭编辑器类型检查
打开VS Code设置(快捷键Ctrl+,),搜索javascript.implicitProjectConfig.checkJs,将其设置为false,彻底关闭JavaScript文件的类型检查。
内容的提问来源于stack exchange,提问作者Marcos Souza
相关产品推荐
相关产品推荐

