You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何React脚本内联正常,外部文件引入却无法运行?

问题:拆分React代码为HTML和JS文件后页面空白

我在学习React时开发了一个简易静态应用,单文件实现时无论是直接打开页面还是通过本地http-server部署,都能正常显示Hello React!。但将代码拆分为index.html和index.js后,页面显示空白,无法正常渲染内容。

单文件正常代码

<!DOCTYPE html>
<html>
    <head>
    <title>React</title>
    <script src="https://unpkg.com/react@15.3.2/dist/react.js"></script>
    <script src="https://unpkg.com/react-dom@15.3.2/dist/react-dom.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js"></script>
    </head>
<body>
    <div id = "root"> </div>
    <script type="text/babel">ReactDOM.render(<h1>Hello React!</h1>, document.getElementById("root"));</script>
</body>
</html>

拆分后的目录结构

static_react
|----index.html
|----index.js

拆分后的代码

index.html

<!DOCTYPE html>
<html>
    <head>
    <title>React</title>
    <script src="https://unpkg.com/react@15.3.2/dist/react.js"></script>
    <script src="https://unpkg.com/react-dom@15.3.2/dist/react-dom.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js"></script>
    </head>
<body>
    <div id = "root"> </div>
    <script src="index.js" type="text/babel"></script>
</body>
</html>

index.js

ReactDOM.render(<h1>Hello React!</h1>, document.getElementById("root"))

解决方案

1. 必须通过HTTP服务器访问

直接打开本地index.html文件时,浏览器的同源策略会阻止babel加载并解析外部的index.js文件(因为使用的是file://协议,存在跨域限制)。你需要使用http-server或其他本地HTTP服务器部署项目,再通过http://localhost:xxxx访问页面。

2. 替换为更可靠的Babel浏览器端工具

你使用的babel-core@5.8.23是非常老旧的版本,已经停止维护,对外部JSX文件的支持存在缺陷。建议更换为官方维护的@babel/standalone,修改index.html中的Babel引用:

<!-- 替换原来的babel-core script标签 -->
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

新版本的@babel/standalone对外部JS文件的解析更稳定,能避免旧版本的兼容性问题。

3. 补充代码末尾的分号(可选但推荐)

虽然JavaScript允许省略分号,但某些旧解析器可能因此出现语法错误。给index.js的代码加上分号:

ReactDOM.render(<h1>Hello React!</h1>, document.getElementById("root"));

4. 查看浏览器控制台排查错误

打开浏览器开发者工具(F12)的控制台面板,查看是否有报错信息:

  • 如果是跨域相关错误:确认已通过HTTP服务器访问
  • 如果是语法错误:根据提示调整代码

内容的提问来源于stack exchange,提问作者FuzzyData

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 03:05:26