2015-07-29 20 views
5

CEL: Próbuję utworzyć projekt w nodejs i WebPack takie, że funkcja wymagać mogą korzystać z katalogu projektu jako root, więc mogę wymagać z ścieżka bezwzględna w stosunku do głównego projektu w obu środowiskach (izomorficzna używa tj. React serwer + renderowanie klienta).WebPACK i Nodejs izomorficzna wymagają bezwzględną ścieżkę

SYTUACJA W WebPacka można ustawić config.resolve.root aby to działało, ale w nodejs jego najlepszych praktyk, aby nie nadpisać/zmodyfikować global.require.

PROPOZYCJA 1: Mogę zrobić nowy globalną funkcję

global.p_require 

tak to działa w węźle; jednak nie mogę znaleźć sposobu na umożliwienie przeanalizowania "p_require" w pakiecie sieci Web w __webpack_require__ bez zmiany kodu źródłowego pakietu WWW.

PROPOZYCJA 2: Mogę zrobić nowy zmienną globalną

global.ROOT_DIR = process.cwd() 

tak to działa w węźle przez

require(ROOT_DIR + <relative path to root>); 

jednak WebPack uzna to za dynamiczne wymagają. Czy istnieje sposób, że pakiet sieci Web będzie analizować ROOT_DIR? Wypróbowałem już Define Plugin, ale wydaje się, że ładuje się po tym, jak wymaga parsowania.

PYTANIE

Każdy ma rozwiązanie lub stoi ten sam problem?

+0

Czy próbowałeś ustawić 'NODE_PATH' przed uruchomieniem webpacka i serwera? 'NODE_PATH = webpack',' NODE_PATH = node server.js' – rockingskier

+0

Próbowałem tego. Ale problemem jest to, co dzieje się tutaj: https://gist.github.com/branneman/8048520 (nie zawsze najlepszy hack) – user2255895

+0

po prostu mają ten sam problem tutaj .. czy znalazłeś rozwiązanie? – egig

Odpowiedz

1

Zajmuję się tym, pozwalając, aby pakiet internetowy robił więcej; zamiast "węzła i webpacka" jest to "webpack: klient i serwer". Mam pakiet sieciowy do kompilacji dla klienta i kompilację dla serwera (ta ostatnia używa "węzła" jako swojej właściwości docelowej w konfiguracji). Łatwo spersonalizować katalogi, których wymaga pakiet Webpack, więc pozwól mu wykonać swoją pracę i utwórz kompilację dla węzła.

Podczas renderowania na serwerze wystarczy skompilowana kompilacja serwera. Jeśli chcesz przekazać pewne rzeczy z serwera do aplikacji zbudowanej przez WebPacka, podłącz ją do punktu wejścia, którego używasz do budowania serwera - pakiet WebPC zbuduje go jako wspólny moduł JS, aby twój punkt wejścia mógł eksportować to najwygodniejszy interfejs, gdy serwer musi renderować.