我正在尝试从index.ejs文件运行一个React应用。捆绑包建立。但是,当我路由到此文件时,我在bundle.js脚本上收到一个404,index.ejs文件在那里,并且可以呈现内容,而不是react应用程序。谁能看到我所缺少的吗?这是我的index.ejs文件的样子:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Bookie Lou</title>
</head>
<body>
<div id="root"></div>
<script src="bundle.js"></script>
</body>
</html>
这是我的路由文件的外观,它表示我希望在向'/index/home'
发出get请求时呈现index.ejs:
const express = require('express');
const router = express.Router();
const { ensureAuthenticated } = require('../config/auth');
router.get('/', (req, res) => res.render('welcome'))
router.get('/dashboard', ensureAuthenticated, (req, res) =>
res.render('dashboard', {
user: req.user
})
);
router.get('/index/home', (req, res) => res.render('index'));
module.exports = router;
我的webpack看起来像这样:
module.exports = {
context:
path.join(__dirname, './src/'),
entry: './index.jsx',
devtool: 'source-map',
output: {
filename: 'bundle.js',
path: path.join(__dirname, '/build'),
},
resolve: {
extensions: ['.js', '.jsx','.json', '.css']
},
module: {
rules: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
loaders: ['babel-loader'],
},
{
test: /\.index$/,
use: 'file?name=[name].[ext]'
},
{
test: /\.html$/,
loader: 'file?name=[name].[ext]',
},
{
test: /\.(gif|jpe?g|png|ico)$/,
use: 'url-loader?limit=1000'
},
{
test: /\.(css|less)$/,
use: ['style-loader', 'css-loader', 'less-loader']
}
],
}
};
我的React文件app.jsx和index.jsx位于我的src文件夹中。我的bundle.js文件位于名为build的文件夹中。这两个文件夹都位于根目录。
答案 0 :(得分:1)
我建议您使用html-webpack-plugin
将bundle.js
注入html。