ReactJS: Uncaught ReferenceError: require没有定义
ReactJS: Uncaught ReferenceError: require is not defined
我试图在React JS中使用DRY。我试图使用相同的HTML部分在不同的文件
部分:var AdminMenu = React.createClass({
getInitialState: function() {
return {};
},
render: function() {
return (
<h1>Menu</h1>
);
}
});
我需要它在另一个文件中:
require('./scripts/adminMenu.js');
ReactDOM.render(
<AdminMenu/>,
document.getElementById('content')
);
但是我得到一个错误:
Uncaught ReferenceError: require is not defined
这些脚本包含在HTML页面中,如:<script type="text/babel" src="scripts/admin.js"></script>
我使用webpack
你必须使用
const { Component } = React;
const { render } = ReactDOM;
代替
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
如果你没有使用任何模块捆绑器,如webpack或等。你应该把你的组件分配给一些javascript全局对象,因为。jsx中的对象不会放在全局作用域中
所以这就是解决方案(这里使用window object)
定义模块:window.AdminMenu = React.createClass({
getInitialState: function() {
return {};
},
render: function() {
return (
<h1>Menu</h1>
);
}
});
使用位置:
ReactDOM.render(
<window.AdminMenu/>,
document.getElementById('content')
);
考虑在React中使用ES6模块而不是require
导出一个模块:
// src/hello.js
// export as default
export default const hello = ({name}) => (
<h1>Hello {name}</h1>
)
导入模块:
// src/index.js
// import from relative directory (src)
import Hello from './hello'
const App = () => {
return (
<div>
<Hello name="Pavel" />
</div>
)
}
您应该阅读更多关于模块的信息,例如:https://www.sitepoint.com/understanding-es6-modules/
现有代码中的主要问题是:
- 看起来,尽管你正在使用Webpack,你使用它的方式是错误的。在你最终的bundle(最终的JS文件)中,它不应该包含任何require关键字。你在你的webpack中使用Babel了吗?请向我们展示您的WebPack配置。 你的AdminMenu文件看起来不像模块。您的adminMenu文件应该包含'export'关键字,之后您将能够'要求'或'导入'它从其他文件。
如果方便的话,你也可以在评论中用俄语写问题
相关文章:
- 用嵌套函数和默认函数定义函数
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 为什么“;未定义的“;在JavaScript中结束循环
- 要求未定义JS回调参数
- 控制台返回var不是't定义,但它是
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 如何检查管道中未定义的项目
- TypeError:无法读取属性'推'未定义的JavaScript
- jQuery自定义验证比较多个输入的序列
- 查看JS对象的所有键,甚至是getter定义的键
- fetch() 函数未在 Ubuntu Chromium 浏览器上定义
- $window.ga在AngularJS事件中未定义
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 未捕获的TypeError无法读取未定义的属性socialsharing
- WebDriverException:tinyMCE未在selenium Web driver java中定义
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 定义完全独立的样式信息
- 如何在选项卡上定义属性'的主窗口对象
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的