浏览器内 javascript 不会同时识别 "import" 和 JSX
In-browser javascript won't recognize "import" and JSX at the same time
我正在尝试创建一个从 components
目录导入组件的简单 React 应用程序。目前这是我的文件夹结构:
main
|_components
| |_FirstComponent.js
|_index.html
FirstComponent.js
export class FirstComponent extends React.Component{
render(){
return (
<h1>Hello World</h1>
)
}
}
在 index.html 中,我有加载 react、react-dom 和 babel 的脚本。到目前为止,这是我的 JS 代码:
<script type="module">
import FirstComponent from "./components/FirstComponent.js";
</script>
这给了我错误:Uncaught SyntaxError: Unexpected token '<'
这是 JSX 解析错误,但是当我将脚本类型切换为 text/babel
:
<script type="text/babel">
import FirstComponent from "./components/FirstComponent.js";
</script>
我收到此错误:Inline Babel script:2 Uncaught ReferenceError: require is not defined
换句话说,如果type是module,浏览器就无法读取JSX,但是如果type是babel,浏览器就无法识别require,也就是import。
如何让浏览器正确加载组件?
作为变通方法,您可以将 FirstComponent 导入 index.html 页面,只需执行以下操作:
<script type="text/babel" src="./components/FirstComponent.js"></script>
并且在 FirstComponent.js 中,删除导入和导出语句 以便 文件只有 FirstComponent class/functional 组件.这会将 class 作为内联 babel 脚本加载,您的组件将可供使用。您可以使用 index.html 底部的 ReactDOM.render() 来渲染组件。这是一个简单的解决方法。
FirstComponent.js
// No import statements
class FirstComponent extends React.Component{
render(){
return (
<h1>Hello World</h1>
)
}
}
// No export default statement
我正在尝试创建一个从 components
目录导入组件的简单 React 应用程序。目前这是我的文件夹结构:
main
|_components
| |_FirstComponent.js
|_index.html
FirstComponent.js
export class FirstComponent extends React.Component{
render(){
return (
<h1>Hello World</h1>
)
}
}
在 index.html 中,我有加载 react、react-dom 和 babel 的脚本。到目前为止,这是我的 JS 代码:
<script type="module">
import FirstComponent from "./components/FirstComponent.js";
</script>
这给了我错误:Uncaught SyntaxError: Unexpected token '<'
这是 JSX 解析错误,但是当我将脚本类型切换为 text/babel
:
<script type="text/babel">
import FirstComponent from "./components/FirstComponent.js";
</script>
我收到此错误:Inline Babel script:2 Uncaught ReferenceError: require is not defined
换句话说,如果type是module,浏览器就无法读取JSX,但是如果type是babel,浏览器就无法识别require,也就是import。
如何让浏览器正确加载组件?
作为变通方法,您可以将 FirstComponent 导入 index.html 页面,只需执行以下操作:
<script type="text/babel" src="./components/FirstComponent.js"></script>
并且在 FirstComponent.js 中,删除导入和导出语句 以便 文件只有 FirstComponent class/functional 组件.这会将 class 作为内联 babel 脚本加载,您的组件将可供使用。您可以使用 index.html 底部的 ReactDOM.render() 来渲染组件。这是一个简单的解决方法。
FirstComponent.js
// No import statements
class FirstComponent extends React.Component{
render(){
return (
<h1>Hello World</h1>
)
}
}
// No export default statement