Я пытаюсь загрузить bundle.js скрипт в ejs-файле?

#javascript #node.js #reactjs #ejs

#javascript #node.js #reactjs #ejs

Вопрос:

Я пытаюсь запустить приложение react из моего файла index.ejs. Пакет создается. Однако, когда я направляюсь к этому файлу, я получаю 404 на bundle.js скрипт, файл 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>
  

Вот как выглядит мой файл routes, где я устанавливаю, что хочу, чтобы index.ejs отображался при отправке запроса get в '/index/home' :

 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;
  

Мой веб-пакет выглядит следующим образом:

 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:

Я рекомендовал вам использовать html-webpack-plugin для внедрения bundle.js в html.

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