未加载反应脚本

react script not being loaded

我有以下脚本:

app.js

import React from 'react'
import ReactDOM from 'react-dom'
import {Stage, Sprite} from '@inlet/react-pixi';

const App = () => (
    <Stage>
        <Sprite image="assets/baseBike.png" x={100} y={100}/>
    </Stage>
);

ReactDOM.render(<App/>, document.body);

以及以下

index.html

    <!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>Hello World</title>
</head>
<body>
<div id="stageContainer">

</div>
<script src="https://unpkg.com/babel-standalone@6.26.0/babel.min.js"></script>
<script src="node_modules/pixi.js/dist/pixi.min.js"></script>
<script src="app.js" type="text/babel"></script>
</body>
</html>

现在,当我 运行 控制台中没有错误,但没有呈现任何内容。我也找不到我的脚本是否实际加载了。

如果我删除 type="text/babel" 然后它会抛出一个错误:

Cannot use import statement outside a module

谁能告诉我我可能遗漏了什么?

更新babel

所以我注意到我缺少 babel 但是在添加它之后我收到以下错误:

 require is not defined

我想是因为您在 ReactDOM.render 上使用了 document.body,所以您不小心删除了 app.js 脚本。

尝试使用 div 作为挂载点,看看是否能解决您的问题。

例如

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

当你在 React 中使用独立的 babel 时,你需要配置你想要编译脚本的 babel 预设。

您可能需要这样的东西:

    <script>
        Babel.registerPreset('myPreset', {
            presets: [[Babel.availablePresets['es2015-loose'], { modules: false }], [Babel.availablePresets['react']]],
            plugins: [[Babel.availablePlugins['transform-modules-umd']]],
        });
    </script>

    <script type="text/babel" src="app.js" data-presets="myPreset"></script>

请注意,脚本标签上的数据预设 属性 告诉 babel 使用您定义的预设。

当使用 babel 将 reactjs 与浏览器一起使用时,您不需要使用 import ,这是我如何使用浏览器创建 运行 的简单应用程序(请注意,我没有使用 create-react-app ): app.js

const App = () =>{
return <h1>Test App</h1>
 };
ReactDOM.render(<App/>, document.getElementById('root'));

您可以在 index.html 中将此组件用作

<!doctype html>
   <html>
     <head>
        <meta charset="utf-8">
          <title>Hello World</title>
      </head>

   <body>
<!-- some HTML -->
<div id="root"></div>
<!-- some other HTML -->

<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<!-- babel is required in order to parse JSX -->

<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<!-- import react.js -->

<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"> </script>
<!-- import react-dom.js -->

<script type="text/babel" src="/app.js"></script>
<!-- import your JS and add - type="text/babel" - otherwise babel wont parse it -->
  </body>
</html>

我已经测试过了,对我有用,希望对你有帮助