azat-io
@azat-io

Ошибка при переносе Webpack файла в другую директорию?

Здравствуйте!

Имеется вполне простой сайт, работающий на Express, который в свою очередь запускает Webpack. Файлы server.js и webpack.config.js решил перенести в папку scripts, чтоб немного очистить корневую директорию проекта. Однако при переносе файла с конфигом Webpack стал получать ошибку.

Данный файл работает, если скрипт server.js, который его запускает находятся в папке scripts, а webpack.config.js находится в корневом каталоге:

'use strict';

var path = require('path');
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  devtool: 'eval-source-map',
  entry: [
    'webpack-hot-middleware/client?reload=true',
    path.join(__dirname, 'components/main.js')
  ],
  output: {
    path: path.join(__dirname, '/dist/'),
    filename: '[name].js',
    publicPath: '/'
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: 'components/index.tpl.html',
      inject: 'body',
      filename: 'index.html'
    }),
    new webpack.optimize.OccurenceOrderPlugin(),
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NoErrorsPlugin(),
    new webpack.DefinePlugin({
      'process.env.NODE_ENV': JSON.stringify('development')
    })
  ],
  module: {
    loaders: [{
      test: /\.js?$/,
      exclude: /node_modules/,
      loader: 'babel',
      query: {
        "presets": ["react", "es2015", "stage-0", "react-hmre"]
      }
    }, {
      test: /\.json?$/,
      loader: 'json'
    }, {
      test: /\.css$/,
      loader: 'style!css?modules&localIdentName=[name]---[local]---[hash:base64:5]'
    }, {
      test: /\.(jpe?g|png|gif|svg)$/i,
      loaders: [
        'file?hash=sha512&digest=hex&name=[hash].[ext]',
        'image-webpack?bypassOnDebug&optimizationLevel=7&interlaced=false'
      ]
    }]
  }
};


Попытался перенести файл в папку, добавив ../ ко всем ссылкам, но стал получать следующую ошибку:

ERROR in multi main
Module not found: Error: Cannot resolve 'file' or 'directory' /home/azat/git/azat-io/scripts/components/main.js in /home/azat/git/azat-io
 @ multi main

ERROR in   Error: Child compilation failed:
  Entry module not found: Error: Cannot resolve 'file' or 'directory' /home/azat/git/components/index.tpl.html in /home/azat/git/azat-io:
  Error: Cannot resolve 'file' or 'directory' /home/azat/git/components/index.tpl.html in /home/azat/git/azat-io
  
  - compiler.js:78 
    [azat-io]/[html-webpack-plugin]/lib/compiler.js:78:16
  
  - Compiler.js:214 Compiler.<anonymous>
    [azat-io]/[webpack]/lib/Compiler.js:214:10
  
  - Compiler.js:403 
    [azat-io]/[webpack]/lib/Compiler.js:403:12
  
  - Tapable.js:67 Compiler.next
    [azat-io]/[webpack]/[tapable]/lib/Tapable.js:67:11
  
  - CachePlugin.js:40 Compiler.<anonymous>
    [azat-io]/[webpack]/lib/CachePlugin.js:40:4
  
  - Tapable.js:71 Compiler.applyPluginsAsync
    [azat-io]/[webpack]/[tapable]/lib/Tapable.js:71:13
  
  - Compiler.js:400 Compiler.<anonymous>
    [azat-io]/[webpack]/lib/Compiler.js:400:9
  
  - Compilation.js:577 Compilation.<anonymous>
    [azat-io]/[webpack]/lib/Compilation.js:577:13
  
  - Tapable.js:60 Compilation.applyPluginsAsync
    [azat-io]/[webpack]/[tapable]/lib/Tapable.js:60:69
  
  - Compilation.js:572 Compilation.<anonymous>
    [azat-io]/[webpack]/lib/Compilation.js:572:10
  
  - Tapable.js:60 Compilation.applyPluginsAsync
    [azat-io]/[webpack]/[tapable]/lib/Tapable.js:60:69
  
  - Compilation.js:567 Compilation.<anonymous>
    [azat-io]/[webpack]/lib/Compilation.js:567:9
  
  - Tapable.js:60 Compilation.applyPluginsAsync
    [azat-io]/[webpack]/[tapable]/lib/Tapable.js:60:69
  
  - Compilation.js:563 Compilation.<anonymous>
    [azat-io]/[webpack]/lib/Compilation.js:563:8
  
  - Tapable.js:60 Compilation.applyPluginsAsync
    [azat-io]/[webpack]/[tapable]/lib/Tapable.js:60:69
  
  - Compilation.js:525 Compilation.seal
    [azat-io]/[webpack]/lib/Compilation.js:525:7
  

Child html-webpack-plugin for "index.html":
    
    ERROR in Entry module not found: Error: Cannot resolve 'file' or 'directory' /home/azat/git/components/index.tpl.html in /home/azat/git/azat-io
webpack: bundle is now VALID.


Подскажите, как изменить файл Webpack, чтоб все ссылки стояли нормально и всё работало. Целый день туплю над этой простой вещью, но работать оно никак не желает.
  • Вопрос задан
  • 4054 просмотра
Решения вопроса 1
azat-io
@azat-io Автор вопроса
Разобрался.

Оказывалось всё просто. Это: template: 'components/index.tpl.html', надо было заменить на это:
template: path.join(__dirname, '../components/index.tpl.html'),
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы