Reactjs:意外标记'<';错误
我刚开始使用Reactjs,并编写了一个简单的组件来显示Reactjs:意外标记'<';错误,reactjs,Reactjs,我刚开始使用Reactjs,并编写了一个简单的组件来显示 li标记并遇到此错误: 意外标记“您需要将JSX代码转换/编译为javascript或使用浏览器内转换器 查看并记下标记,您需要JSX包含的标记才能在浏览器中工作。更新:在React 0.12+中,不再需要JSX pragma 确保在文件顶部包含JSX pragma: /** @jsx React.DOM */ 如果没有这一行,jsx二进制和浏览器内转换器将保持您的文件不变。以下是您的jsbin中的一个工作示例: HTML: JS
li
标记并遇到此错误:
意外标记“您需要将JSX代码转换/编译为javascript或使用浏览器内转换器
查看并记下
标记,您需要JSX包含的标记才能在浏览器中工作。更新:在React 0.12+中,不再需要JSX pragma
确保在文件顶部包含JSX pragma:
/** @jsx React.DOM */
如果没有这一行,
jsx
二进制和浏览器内转换器将保持您的文件不变。以下是您的jsbin中的一个工作示例:
HTML:
JS-Bin
jsx:
/**@jsx React.DOM*/
var LikeOrNot=React.createClass({
渲染:函数(){
返回(
像
);
}
});
React.renderComponent(,document.getElementById('main-content');
从单个文件运行此代码,您的脚本应该可以运行。在我的例子中,我未能在脚本标记中包含type属性
<script type="text/jsx">
我用type=“text/babel”
问题意外标记“要正确解析标记,您需要在脚本中使用此babel版本:和属性“type='text/babel'”。此外,自定义脚本应该位于“body”标记中 您可以使用如下代码:
import React from 'react';
import ReactDOM from 'react-dom';
var LikeOrNot = React.createClass({
displayName: 'Like',
render: function () {
return (
React.createElement("li", null, "Like")
);
}
});
ReactDOM.render(<LikeOrNot />, document.getElementById('main-content'));
这对我来说很有用,但我也使用了webpack,带有以下选项(进入webpack.config.js):
在我的例子中,除了
babel
预设之外,我还必须将其添加到我的.eslintrc
:
{
"extends": "react-app",
...
}
如果我们考虑您的实际站点配置,而不需要在头部
中运行ReACTJs<!-- Babel ECMAScript 6 injunction -->
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
并向js文件添加属性-type=“text/babel”类似
然后,下面的代码示例将起作用:
ReactDOM.render(
<h1>Hello, world!</h1>,
document.getElementById('root')
);
ReactDOM.render(
你好,世界!,
document.getElementById('root'))
);
使用以下代码。我添加了React和React DOM的引用。使用ES6/Babel将JS代码转换为普通JavaScript。请注意,Render方法来自ReactDOM,并确保Render方法具有在DOM中指定的目标。
有时您可能会遇到render()方法找不到目标元素的问题。这是因为react代码是在DOM呈现之前执行的。要解决此问题,请使用jQuery ready()调用React的render()方法。通过这种方式,您将确保首先呈现DOM。您还可以在应用程序脚本上使用“延迟”属性
HTML代码:
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
<div id='main-content'></div>
<script src="CDN link to/react-15.1.0.js"></script>
<script src="CDN link to/react-dom-15.1.0.js"></script>
</body>
</html>
JS-Bin
JS代码:
var LikeOrNot = React.createClass({
render: function () {
return (
<li>Like</li>
);
}
});
ReactDOM.render(<LikeOrNot />,
document.getElementById('main-content'));
var LikeOrNot=React.createClass({
渲染:函数(){
返回(
像
);
}
});
ReactDOM.render(,
document.getElementById('main-content');
希望这能解决您的问题。:-) 我有这个错误,两天内无法解决。因此,修复错误非常简单。
在body中,在连接
脚本的地方添加type=“text/jsx”
,这样就可以解决问题。如果你像我一样,容易犯愚蠢的错误,也可以检查你的package.json,如果它包含你的巴别塔预设:
"babel": {
"presets": [
"env",
"react",
"stage-2"
]
},
我今天刚开始学习React
,遇到了同样的问题。下面是我写的代码
<script type="text/babel">
class Hello extends React.Component {
render(){
return (
<div>
<h1>Hello World</h1>
</div>
)
}
}
ReactDOM.render(
<Hello/>
document.getElementById('react-container')
)
</script>
类Hello扩展了React.Component{
render(){
返回(
你好,世界
)
}
}
ReactDOM.render(
document.getElementById('react-container'))
)
正如你所看到的,我在使用
之后漏掉了一个逗号(,)。错误本身说明了我们需要看哪条线
因此,一旦我在ReactDOM.render()函数的第二个参数之前添加了逗号,所有这些都可以正常工作。这里是另一种方法
html
尽管如此,我在我的.babelrc配置文件中有所有合适的babel加载程序。在手动页面刷新时,此使用包绑定器构建脚本在浏览器控制台中为我生成了意外的令牌错误<和mime类型错误
"scripts": {
"build": "parcel build ui/index.html --public-url ./",
"dev": "parcel watch ui/index.html"
}
更新构建脚本修复了我的问题
"scripts": {
"build": "parcel build ui/index.html",
"ui": "parcel watch ui/index.html"
}
检查.babelrc是否在应用程序根文件夹中,而不是在子文件夹中。如果是这种情况,请将文件移到根目录。是的,我知道,下面是更新的jsbin,jsbin似乎有自己的执行JS的方式,错误来自他们的代码。但它是相同的错误,并且在相同的行号。另外,如果我使用的是JSFIDLE中提供的相同代码,并且React工作正常,那么会发生这样的错误还有其他原因吗?请确保在
标记中设置type=“text/jsx”,如果你想,请将整个代码粘贴到hastebin.org贴纸中,但我使用的是babel,我必须插入类型=“text/babel”
。勇敢的JavaScriptNew world这对我的情况很有帮助:没错,用“text/babel”代替“text/jsx”“。参考巴别塔核心url->问题中没有任何内容表明原始海报正在使用巴别塔。他说他只是从Reactjs开始,因为React-babel预设必须使用。可能是网页配置遗漏了巴别塔预设。问题中也没有任何内容表明原始海报正在使用网页包。使用React时,这两种工具都不是必需的,尽管它们都很方便。@Nuwa谢谢npm install babel preset react
解决了我的问题。如果您在项目中有.babelrc
文件,只需“presets”:[“env”,“react”,“es2015”]
就可以了!!你能解释一下你的答案吗?我想当你给出type=“text/jsx”时,你会想知道这是什么类型的文档或文件。
<script src="../js/r1HeadBabel.js" type="text/babel"></script>
ReactDOM.render(
<h1>Hello, world!</h1>,
document.getElementById('root')
);
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
<div id='main-content'></div>
<script src="CDN link to/react-15.1.0.js"></script>
<script src="CDN link to/react-dom-15.1.0.js"></script>
</body>
</html>
var LikeOrNot = React.createClass({
render: function () {
return (
<li>Like</li>
);
}
});
ReactDOM.render(<LikeOrNot />,
document.getElementById('main-content'));
"babel": {
"presets": [
"env",
"react",
"stage-2"
]
},
<script type="text/babel">
class Hello extends React.Component {
render(){
return (
<div>
<h1>Hello World</h1>
</div>
)
}
}
ReactDOM.render(
<Hello/>
document.getElementById('react-container')
)
</script>
<head>
<title>Parcel Sandbox</title>
<meta charset="UTF-8" />
</head>
<body>
<div id="app"></div>
<script src="src/index.js"></script>
</body>
</html>
import React from "react";
import { render } from "react-dom";
import "./styles.scss";
const App = () => (
<div>
<h1>Hello test</h1>
</div>
);
render(<App />, document.getElementById("app"));
{
"name": "test-app",
"version": "1.0.0",
"description": "",
"main": "index.html",
"scripts": {
"start": "parcel index.html --open",
"build": "parcel build index.html"
},
"dependencies": {
"react": "16.2.0",
"react-dom": "16.2.0",
"react-native": "0.57.5"
},
"devDependencies": {
"@types/react-native": "0.57.13",
"parcel-bundler": "^1.6.1"
},
"keywords": []
}
"scripts": {
"build": "parcel build ui/index.html --public-url ./",
"dev": "parcel watch ui/index.html"
}
"scripts": {
"build": "parcel build ui/index.html",
"ui": "parcel watch ui/index.html"
}