我正在尝试在ejs文件中加载bundle.js脚本?

时间:2019-03-18 04:00:41

标签: javascript node.js reactjs ejs

我正在尝试从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的文件夹中。这两个文件夹都位于根目录。

1 个答案:

答案 0 :(得分:1)

我建议您使用html-webpack-pluginbundle.js注入html。

https://github.com/jantimon/html-webpack-plugin