使用RequireJS加载React时出现‘React is not defined’错误的原因?
为什么会出现「React is not defined」错误?
嘿,这个问题其实是RequireJS模块加载的常见小坑!问题的核心在于你没有正确接收RequireJS加载后的模块引用。
你看这段代码:
require(['react', 'react-dom'], function () { var x = React;//Error - React is not defined });
当RequireJS加载完你指定的react和react-dom模块后,会把这两个模块的导出值按顺序传递给回调函数,但你的回调函数里没有定义对应的参数来接收它们。而且React的UMD生产版本在RequireJS环境下,会遵循AMD规范只通过模块导出返回,不会自动把React挂载到全局作用域,所以你直接访问全局的React变量自然会报错。
只要给回调函数加上对应顺序的参数,就能正常获取模块引用了:
require(['react', 'react-dom'], function (React, ReactDOM) { var x = React; // 现在可以正常访问React了 // 后续也能使用ReactDOM进行DOM渲染等操作 });
简单来说,就是要让RequireJS把加载好的模块“递”到你手里,而不是等着它自己跑到全局里~
内容的提问来源于stack exchange,提问作者glosrob
相关产品推荐
相关产品推荐

