Почему я получаю сообщение об ошибке 404 для файлов видео и изображений при развертывании приложения REACT-webpack в Heroku? - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь развернуть приложение REACT Webpack в Heroku. Все html, js и css файлы обслуживаются, но я получаю 404s для всех файлов изображений и видео.

Я почти уверен, что пути правильные, потому что файлы видео / изображений всерендеринг правильно локально. Также, как вы можете видеть, я установил загрузчик файлов и настроил его в своем файле webpack.config. Я показываю некоторые соответствующие фрагменты из моих файлов ниже, извините, что все это немного беспорядок. Пожалуйста, дайте мне знать, если есть что-то еще, чем я могу поделиться, чтобы прояснить ситуацию. Я довольно новичок в Heroku и действительно изо всех сил пытался развернуть проекты для него в прошлом. Будем весьма благодарны за любые идеи и возможные решения.

Мои сообщения консоли:

ChefUp-logo.png:1 Failed to load resource: the server responded with a status of 404 (Not Found)
home-icon.png:1 Failed to load resource: the server responded with a status of 404 (Not Found)
Meat_2.mp4:1 Failed to load resource: the server responded with a status of 404 (Not Found)
Meat_1.mp4:1 Failed to load resource: the server responded with a status of 404 (Not Found)
Dessert_1.mp4:1 Failed to load resource: the server responded with a status of 404 (Not Found)
Dessert_2.mp4:1 Failed to load resource: the server responded with a status of 404 (Not Found)
Veg_1.mp4:1 Failed to load resource: the server responded with a status of 404 (Not Found)
Veg_3.mp4:1 Failed to load resource: the server responded with a status of 404 (Not Found)

my webpack.config.js

var CopyWebpackPlugin = require('copy-webpack-plugin');
const path = require('path');

module.exports = {
  entry: './src/js/main.js',

  output: {
    path: path.join(__dirname, '/dist'),
    filename: 'bundle.js'
  },

  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader'
       }
      },
      {
        test: /\.css$/,
        use: [
           'style-loader',
           'css-loader'
        ]
    },
      {
        test: /\.less$/,
        loader: "style!css!less"
      },
      {
        test: /\.(jpg|png|gif)$/,
        use: [
          'file-loader'
        ]
      },
      {
        test: /\.(mp3|wav|ogg|mp4)$/,
        use: [
          'file-loader'
        ]
    }
    ]
  },

  plugins: [
    new CopyWebpackPlugin([
      { from: './src/index.html' }
    ]),
  ],

  resolve: {
    extensions: ['webpack.js', 'web.js', '.js', '.jsx']
  },

  devServer: {
    inline: true,
    contentBase: './dist',
    port: 5000
  }
};

Мои зависимости package.json иdevdependencies:

    "babel-core": "^6.26.3",
    "babel-preset-env": "^1.7.0",
    "babel-preset-es2015": "^6.18.0",
    "babel-preset-react": "^6.24.1",
    "copy-webpack-plugin": "^4.6.0",
    "css-loader": "^0.26.1",
    "express": "^4.14.0",
    "file-loader": "^4.2.0",
    "less": "^2.7.2",
    "less-loader": "^2.2.3",
    "react": "^16.10.2",
    "react-bootstrap": "^1.0.0-beta.14",
    "react-dom": "^16.10.2",
    "react-strap": "0.0.1",
    "react-youtube": "^7.9.0",
    "reactstrap": "^8.0.1",
    "style-loader": "^0.13.1",
    "url-loader": "^0.5.7",
    "video-react": "^0.14.1",
    "webpack": "^4.41.0",
    "webpack-dev-server": "^3.8.2"
  },
  "devDependencies": {
    "babel-core": "^6.26.3",
    "babel-loader": "^7.1.5",
    "babel-preset-env": "^1.7.0",
    "babel-preset-react": "^6.24.1",
    "webpack": "^4.41.0",
    "webpack-cli": "^3.3.9",
    "webpack-dev-server": "^3.8.2"
  }
}

маршруты в моем главном компоненте (ChefApp.js)

    constructor(props) {
        super(props);
        this.state = {
            chefclasses: ["src/videos/Meat_1.mp4", "src/videos/Meat_2.mp4", "src/videos/Dessert_1.mp4", "src/videos/Dessert_2.mp4", "src/videos/Veg_1.mp4", "src/videos/Veg_3.mp4"],
            selectedvideo: false,
            ingredients: [],
            instructions: []
        }

Мой server.js

var express = require('express');

var app = express();

app.use(express.static(path.join(__dirname, 'dist')));
app.use(express.static(path.join(__dirname, 'src/js')));
app.set('port', process.env.PORT || 8080);

var server = app.listen(app.get('port'), function() {
  console.log('listening on port ', server.address().port);
});

Наконец, это соответствующие файлыв структуре моей папки:

|--dist
|----bundle.js
|----index.js
|--node_modules
|--src
|----componnents
|------ChefApp.js
|------style.jss
|----images
|----js
|------main.js
|----videos
|----index.html
|--package.json
|--server.js
|--webpack.config.js

Извиняюсь, если я поделился слишком большим количеством кода, я просто не знаю, где точно определить проблему. Большое спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...