如何解决React项目中‘prop-types not found on request’报错?
解决步骤
1. 先修正自己代码的导入方式
把App组件里的prop-types导入改成:
import PropTypes from 'prop-types';
这样你的组件propTypes校验才能正常工作。
2. 调整FuseBox配置,确保prop-types被正确解析
打开你的FuseBox配置文件(一般是fuse.js),做以下调整:
- 确保
node_modules被纳入模块扫描路径 - 开启对CommonJS模块的兼容(FuseBox默认支持,但显式配置更稳妥)
- 可选:显式把prop-types加入打包依赖列表
示例配置片段:
const { FuseBox, WebIndexPlugin } = require("fuse-box"); const fuse = FuseBox.init({ homeDir: "./src", output: "./dist/$name.js", modulesFolder: "node_modules", // 确保扫描node_modules target: "browser@es6", allowSyntheticDefaultImports: true, // 兼容ES和CommonJS模块的导入差异 include: ["prop-types", "react", "react-dom", "material-ui", "material-ui-icons"] // 显式指定要打包的核心依赖 }); // 打包你的应用 fuse.bundle("app") .instructions("> index.js") .plugin(WebIndexPlugin({ template: "./src/index.html" })); fuse.run();
3. 清除缓存重新打包
FuseBox的缓存有时候会导致依赖解析异常,执行以下操作:
- 删除项目根目录下的
dist和.fusebox文件夹 - 重新运行你的打包命令(比如
node fuse.js)
额外排查方向
如果上面的方法都没用,可以试试:
- 把prop-types降级到
^15.5.10,旧版本的FuseBox对这个版本的兼容性更好 - 升级Material-UI到更稳定的beta版本(比如1.0.0-beta.40),这个版本的模块结构更规范,和FuseBox的兼容性会更好
内容的提问来源于stack exchange,提问作者Stiño
相关产品推荐
相关产品推荐

