要求未定义

新手上路,请多包涵

我正在构建一个新的 React 应用程序但收到以下错误 - “未定义要求”

你好-world.html

 <!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Hello React!</title>
    <script src="react/react.js"></script>
    <script src="react/react-dom.js"></script>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js"></script>
  </head>
  <body>
    <div id="example"></div>
    <script type="text/babel" src="hello-world.js">
  </body>
</html>

你好世界.js

 import React from 'react';
import ReactDOM from 'react-dom';

import App from './App.jsx';

ReactDOM.render(
        <App />,
        document.getElementById('example')
      );

应用程序.jsx

 import React from 'react';

class App extends React.Component {
   render() {
      return (
         <div>
            Hello World!!!
         </div>
      );
   }
}

export default App;

我从我的客户端运行它,并且没有运行任何 Web 服务器。

我试图包括 http://requirejs.org/docs/release/2.2.0/minified/require.js 但它给出了一个完全不同的错误。

原文由 user1050619 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 485
1 个回答

您正在尝试在浏览器中使用 CommonJS 模块。这是 行不通 的。

你如何使用它们?当你在 ES6 中编写 import ... from ... 时,Babel 会将这些调用转换为名为 CommonJS 的模块定义,并且由于 CommonJS 不在浏览器中,你将从 require() 得到一个未定义的错误。

此外,您还尝试加载 RequireJS,它使用称为 AMD 的不同模块定义模式,异步模块定义,并且不会为您处理 require 调用。您可以 将它们包装 在 RequireJS 特定调用中。

如果你想在代码库中使用 CommonJS 模块,你需要先将它们与 Browserifywebpack 捆绑在一起。这两个工具会将您的 require 调用转换为您可以在浏览器中使用的一些粘合魔法。

但在您的特定情况下,如果您删除 import 调用,让浏览器处理并将您创建的类附加到 window 对象,您的代码应该可以工作。

原文由 Henrik Andersson 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Stack Overflow 翻译
子站问答
访问
宣传栏