簡體   English   中英

BABEL 解析錯誤:將 react js 轉換為 js

[英]BABEL parse error: transpiling react js into js

我正在嘗試使用 babel 將我的 react jsx 代碼轉換為 js。 這是我使用的命令:

npx babel BlueSlide/js/student_slider.jsx --watch --out-file BlueSlide/static/js/student_slider_compiled.js

當我這樣做時,我收到此錯誤

  49 |   render() {
  50 |     return (
> 51 |       <div class="jumbotron thinking">
     |       ^
  52 |         <h1>Welcome To Blue Slide</h1>
  53 |         <p>How well do you understand what's going on</p>
  54 |         <div class="slidecontainer">
    at Parser.raise (/Users/joshua/Websites/BlueSlide/node_modules/@babel/parser/lib/index.js:6344:17)
    at Parser.unexpected (/Users/joshua/Websites/BlueSlide/node_modules/@babel/parser/lib/index.js:7659:16)
    at Parser.parseExprAtom (/Users/joshua/Websites/BlueSlide/node_modules/@babel/parser/lib/index.js:8828:20)
    at Parser.parseExprSubscripts (/Users/joshua/Websites/BlueSlide/node_modules/@babel/parser/lib/index.js:8413:23)
    at Parser.parseMaybeUnary (/Users/joshua/Websites/BlueSlide/node_modules/@babel/parser/lib/index.js:8393:21)
    at Parser.parseExprOps (/Users/joshua/Websites/BlueSlide/node_modules/@babel/parser/lib/index.js:8280:23)
    at Parser.parseMaybeConditional (/Users/joshua/Websites/BlueSlide/node_modules/@babel/parser/lib/index.js:8253:23)
    at Parser.parseMaybeAssign (/Users/joshua/Websites/BlueSlide/node_modules/@babel/parser/lib/index.js:8200:21)
    at Parser.parseParenAndDistinguishExpression (/Users/joshua/Websites/BlueSlide/node_modules/@babel/parser/lib/index.js:8963:28)
    at Parser.parseExprAtom (/Users/joshua/Websites/BlueSlide/node_modules/@babel/parser/lib/index.js:8760:21) {
  pos: 1356,
  loc: Position { line: 51, column: 6 },
  code: 'BABEL_PARSE_ERROR'
}

我嘗試用一​​個簡單的 div 和同樣的問題來替換渲染函數的內部。 我不知道為什么它對我的渲染返回語句大喊大叫。

我只想編譯反應代碼,以便我可以將它與我的 html 一起使用,如果這不是正確的方法,請隨時提出替代方案。

首先安裝 babel-cli

npm i babel-cli -g //install globally so u can use anywhere

Babel 是一個編譯器,但默認情況下它不會編譯任何東西。 我們必須添加插件和預設才能對我們的代碼進行任何形式的更改。 你必須安裝

 npm i babel-preset-env babel-preset-react --save-dev

現在您需要創建兩個目錄。 公共和源代碼。 在公共文件夾中放置 index.js 和 index.html。

索引.html

<body>
    <div id="here"></div>

    <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="./index.js"></script> //index.js

index.js 應該是空的。 我們將在 src 目錄中編寫我們的 jsx 代碼,babel 會將其轉換為 index.js

現在在 src 文件夾中創建 app.js 並運行此代碼進行測試

源代碼/應用程序.js

const template = <p>this is jsx</p>;
const appRoot = document.getElementById("here");
ReactDOM.render(template2, appRoot);

現在在命令行中運行此代碼:

babel src/app.js --out-file=public/index.js --presets=env,react --watch

如果你檢查 public/index.js

"use strict";

var template = React.createElement(
  "p",
  null,
  "this is jsx"
);
var appRoot = document.getElementById("here");
ReactDOM.render(template2, appRoot);

您尚未發布 babel.rc 文件,但我懷疑您尚未安裝@babel/preset-react並將其添加到您的配置中。 這是轉換 JSX 語法所必需的。

@babel/preset-react 

應該安裝。 在編譯 jsx -> js 代碼時:

--presets @babel/react

應提供參數。 所以你的編譯代碼看起來像這樣:

npx babel BlueSlide/js/student_slider.jsx --presets @babel/react --watch --out-file BlueSlide/static/js/student_slider_compiled.js

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM