2016-01-10 1 views
3

Я пытаюсь представить Webpack в проекте, который использует модули AMD с Require.js. Соответствующая часть структуры проекта заключается в следующем:Попытка создания модулей AMD с помощью Webpack - получение «Невозможно разрешить ошибку модуля» Ошибка

enter image description here

(то есть корневой папки проекта содержит js папку со всеми сценариями приложений, чья точка входа является main.js, а также tools папку с npm_modules и задача глотка, что я строй)

(и да, я знаю, что было бы проще иметь npm_modules и gulpfile в корне проекта, но это структура, которая у меня есть)

Так что я пытаюсь построить JS-пакет из модулей AMD, в которые приложение разделено. Для упрощения, скажем, файл main.js имеет следующий код:

define([ 
    'jquery' 
], function (
    $ 
) { 
    'use strict'; 

    console.log($); 
}); 

, что означает, что мне нужно импортировать jquery из ./js/libs/vendor/jquery/dist/jquery.js

Так вот WebPack CONFIG (webpack.js файл на диаграмме дерева) что я писал:

var path = require('path'); 

var appModulesPath = path.resolve('../js'); // gulpfile’s process is run in ./tools folder 
var nodeModulesPath = path.join(__dirname, '..', 'node_modules'); 
console.log(appModulesPath, ' and ', nodeModulesPath); // I confirm that paths are correct 

module.exports = { 
    context: path.join(__dirname, '../../'), 
    debug: false, 
    resolve: { 
     root: [appModulesPath, nodeModulesPath], 
     alias: { 
      'jquery': 'libs/vendors/jquery/dist/jquery', 
     }, 
     extensions: ['.js'] 
    }, 
    entry: ['./js/main'], 
    output: { 
     path: path.join(__dirname, '../../js'), 
     filename: 'bundle.js' 
    }, 
    module: { 
     loaders: [ 
      {test: /jquery/, loader: 'exports?$'}, 
     ] 
    } 
}; 

, но когда я пытаюсь запустить задачу, я получаю следующую ошибку:

ERROR in ../js/main.js 
Module not found: Error: Cannot resolve module 'exports' in /path/to/project/root/folder/js 
@ ../js/main.js 1:0-9:2 

Если я правильно понял ошибку, Webpack пытается и не использует exports-loader. Но я установил его, и он находится в папке node_modules. Неужели Webpack не знает, где искать node_modules? Но я разрешаю корень в конфиге, и когда я выхожу из путей, которые я перехожу на resolve.root, это: /path/to/project/root/js и /path/to/project/root/tools/node_modules. Почему Webpack не выбирает exports-loader?

Я вне идеи. Не могли бы вы помочь?

+0

вы должны отметить свой собственный ответ как принято :) – Tieme

+0

сделано :-) (wow, есть ограничение на то, как короткий комментарий может быть! Простой «сделанный» не разрезал) – azangru

+0

Отлично! Ха-ха, да .., чтобы предотвратить: «Спасибо» – Tieme

ответ

4

Bah! Чтобы потратить полчаса, описывая проблему, а затем, в окончательном отчаянном поиске попытайтесь найти ответ! :-)

Решение должно было использовать resolveLoader.

this обсуждение на Github.

+3

, что означает этот ответ? – gman

Смежные вопросы