【问题标题】:How to avoid error 'Unexpected token <' with a React app when running babel from a CDN?从 CDN 运行 babel 时,如何避免 React 应用出现错误“Unexpected token <”?
【发布时间】:2018-04-23 04:39:12
【问题描述】:

我是 React 新手,目前希望使用 CDN 运行所有内容。似乎通过包含''来解决类似的问题,以避免我遇到相同的错误(“Uncaught SyntaxError:Unexpected token

<!DOCTYPE html>
<html lang="en">
<head>
    <body>
    <meta charset="UTF-8">
    <title>Title</title>
    <script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.7.7/babel.min.js"></script>
    <script type="text/babel"></script>
    <div id="app"></div>

</head>
<body>
<script>
    console.log('App.js is running!');
    var Template = (
        <div>
            <h1>John</h1>
            <p>Age: 26</p>
            <p>Location: Philadelphia</p>
        </div>
    )
    var AppRoot = document.getElementById('app')
    ReactDOM.render(Template, AppRoot)
</script>
</body>
</html>

【问题讨论】:

    标签: javascript reactjs babeljs


    【解决方案1】:

    <!DOCTYPE html>
    <html>
    <head>
      <title>First React App</title>
      <script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
      <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
      <script src='https://unpkg.com/babel-standalone@6/babel.min.js'></script>
    </head>
    <body>
      <div id='app'></div>
    
      <script type='text/babel'>
    console.log('App.js is running!');
    
    class Template extends React.Component{
      render(){
        return(
          <div>
            <h1>John</h1>
            <p>Age: 26</p>
            <p>Location: Philadelphia</p>
        </div>
        )
      }
    }
    
    //ReactDom function starting
    
    var AppRoot = document.getElementById('app')
    ReactDOM.render(<Template/>, AppRoot)
    </script>
    </body>
    </html>

    使用 Reactjs 版本 16。创建 class-based 组件然后 render 它。使用本纪录片更好地理解。 Link

    【讨论】:

      【解决方案2】:

      您必须将type='text/babel' 添加到您的脚本中。如果你想开始学习,我还建议至少使用 react 16。您可能还需要确保使用 UMD 版本的 react 和 reactDOM 以确保它们在浏览器中运行。

      <!DOCTYPE html>
      <html>
      <head>
        <title>First React App</title>
        <script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
        <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
        <script src='https://unpkg.com/babel-standalone@6/babel.min.js'></script>
      </head>
      <body>
        <div id='app'></div>
      
        <script type='text/babel'>
      console.log('App.js is running!');
      var Template = (
          <div>
              <h1>John</h1>
              <p>Age: 26</p>
              <p>Location: Philadelphia</p>
          </div>
      )
      var AppRoot = document.getElementById('app')
      ReactDOM.render(Template, AppRoot)
      </script>
      </body>
      </html>

      【讨论】:

      • 我确实有它,只是位置不对?
      • 您的脚本中有两个错误:'text/babel' 类型应该在包含您要转译的代码的脚本标签中,第二个错误是您的 id 为'app' 在你的脑海中,这将导致它不会显示在浏览器中,即使 babel 编译了你的代码。
      猜你喜欢
      • 1970-01-01
      • 2020-10-17
      • 2018-12-15
      • 2016-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多