2015-10-10 13 views
5

Ich versuche, eine bestehende Website zu konvertieren webpack zu verwenden, aber alle vorhandenen erfordern Wege sind absolut:Wie löse ich absolute Required-Pfade mit Webpack?

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

Ich habe durch die webpack documentation gelesen und fand auch this answer über Wege zu lösen, aber wasn‘ t ziemlich fähig, mein Problem zu lösen. Wenn resolve.root gemäß den Anweisungen in der Antwort oben Einstellung konnte ich das bekommen folgende arbeiten:

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

Aber ich kann immer noch nicht herausfinden, wie der absolute Pfad zum Laufen zu bringen, und ich würde wirklich lieber nicht durchgehen und alle meine Pfade aktualisieren. Hier ist die Website-Struktur:

/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 
    } 
}; 

Der Fehler, den ich erhalte ist:

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

Was mache ich falsch?

+0

Es scheint, wie [das im Grunde, was ich will] (https://webpack.github.io/docs/resolving.html#resolving-an-absolute-path). Ich bin jedoch verwirrt darüber, wo das "Haupt" -Feld zu definieren ist. – ericgio

+0

haben Sie eine Lösung gefunden? – mpolci

+0

Wahrscheinlich nicht sehr hilfreich, aber ich habe am Ende einen Code-Mod gemacht und die Pfade geändert: 'var Component = require ('Pfad/zu/meinem/Komponente');' – ericgio

Antwort

2

Die resolve.root Konfigurationsoption kann das sein, was Sie nach. Es ist hier dokumentiert: http://webpack.github.io/docs/configuration.html#resolve-root

resolve.root Das Verzeichnis (absoluter Pfad), das Ihre Module enthält. Kann auch ein Array von Verzeichnissen sein. Diese Einstellung soll auf hinzufügen einzelne Verzeichnisse zu dem Suchpfad verwendet werden.

Es muss ein absoluter Pfad sein! Übergeben Sie nicht etwas wie ./app/modules.

Beispiel:

var path = erfordern ('Pfad');

// ... Entschluss: {root: [ path.resolve (‘./ app/modules '), path.resolve (' ./ Verkäufer/Module)]}

+0

'path.resolve()' löst einen Weg zu seiner absoluten Form - siehe https://nodejs.org/docs/latest/api/path.html#path_path_resolve_from_to – Sacho

Verwandte Themen