我已成功提供了我的React应用的index.html文件,但是替换了html文件中index.js
的{{1}}
我的第一个React组件未在<root>
上触发。
如何启动ReactDOM.render
文件?如果我对服务React应用程序的理解在某些方面存在偏差,我会非常感谢
感谢澄清。
index.js
server.js
index.html
- 似乎是main.[hash].js
的缩小版,其中包含index.js
我的React app ReactDOM.render
这会成功加载由。提供的默认index.html 创建反应的应用内
// server.js
let app = express();
app.use(express.static(path.join(__dirname, '../client/public')));
上面的代码部分可能/可能没用,但它是默认的
create-react-app附带的html文件。我需要更换吗?
带有脚本标记的noscript标记,该标记引用了缩小的// index.html
<body>
<noscript>
You need to enable JavaScript to run this app.
</noscript>
<div id="root"></div>
</body>
文件?我试过了,并没有改变,但也许是这样
因为不正确的相对路径制作。
答案 0 :(得分:12)
通过试验/错误尝试了许多不同的事情后,解决方案非常简单:
在静态调用中提供/ client / build文件夹,如下所示:
app.use(express.static(path.join(__dirname, '../client/build')));
答案 1 :(得分:0)
我有一段时间遇到了同样的问题,我想说有效的解决方案分为两部分以避免路由器出现问题
const buildPath = path.normalize(path.join(__dirname, '../client/build'));
app.use(express.static(buildPath));
const rootRouter = express.Router();
/*
* all your other routes go here
*/
rootRouter.get('(/*)?', async (req, res, next) => {
res.sendFile(path.join(buildPath, 'index.html'));
});
app.use(rootRouter);