2015-10-10 12 views
5

Próbuję przekształcić istniejącą stronę internetową do korzystania WebPACK, ale wszystkie wymagają istniejące ścieżki są bezwzględne:Jak mogę rozwiązać ścieżki bezwzględnych żądań za pomocą pakietu internetowego?

var Component = require('/path/to/my/component'); 

Czytałem przez webpack documentation a także znaleźć this answer o rozwiązywaniu ścieżki, ale nie był” t całkiem w stanie rozwiązać mój problem. Podczas ustawiania resolve.root zgodnie z instrukcjami w odpowiedzi powyżej, udało mi się uzyskać następujące do pracy:

var Component = require('./path/to/my/component'); 
var Component = require('path/to/my/component'); 

Jednak nadal nie mogę dowiedzieć się, jak dostać pracę bezwzględna ścieżka i ja naprawdę wolę nie przechodzić i aktualizować wszystkie moje ścieżki. Oto struktura strony:

/app 
    /assets 
    /javascripts 
     /build 
     package.js 
     index.js 
/node_modules 

webpack.config.js:

var JS_ROOT = __dirname + '/app/assets/javascripts'); 

module.exports = { 
    entry: JS_ROOT + '/index', 
    output: { 
    path: JS_ROOT + '/build', 
    filename: 'package.js' 
    }, 
    ... 
    resolve: { 
    root: JS_ROOT 
    } 
}; 

Błąd wciąż otrzymuję to:

Module not found: Error: Cannot resolve 'file' or 'directory' /path/to/component in /Users/<username>/<ProjectRoot>/app/assets/javascripts 

Co robię źle?

+0

ramę wydaje się, że [to w zasadzie to, czego chcę] (https://webpack.github.io/docs/resolving.html#resolving-an-absolute-path). Nie jestem jednak pewien, gdzie zdefiniować pole "główne". – ericgio

+0

znalazłeś rozwiązanie? – mpolci

+0

Prawdopodobnie niezbyt pomocna, ale skończyłem właśnie robiąc mod mody i zmieniając ścieżki: 'var Component = require ('path/to/my/component');' – ericgio

Odpowiedz

2

Opcja konfiguracji resolve.root może być tym, za czym się znajdujesz. Jest to udokumentowane: http://webpack.github.io/docs/configuration.html#resolve-root

resolve.root Katalog (ścieżka bezwzględna), który zawiera moduły. Może być także tablicą katalogów. To ustawienie powinno być używane do dodawania poszczególnych katalogów do ścieżki wyszukiwania.

To musi być absolutna ścieżka! Nie przekazuj czegoś takiego jak ./app/modules.

Przykład:

var ścieżka = wymagaj ("ścieżka");

// ... rozwiązać {korzeni [ path.resolve (app”.//moduły '), path.resolve (' ./ dostawcy/modułów)]}

+0

'path.resolve()' rozwiązuje ścieżkę do jej absolutnej formy - patrz https://nodejs.org/docs/latest/api/path.html#path_path_resolve_from_to – Sacho

Powiązane problemy