2015-07-29 22 views
5

HEDEF: Ben nodejs ve bir proje kurmaya çalışıyorum gerektiren fonksiyon root olarak proje dizini kullanabilirsiniz, bu yüzden ile gerektirebilir ki webpack böyle Her iki ortamda da proje kökü ile ilgili mutlak yolu (izomorfik kullanımları, React server + client render).WebPack ve Nodejs mutlak yol ile ihtiyaç izomorf

DURUM: WebPack size o iş yapmak config.resolve.root ayarlayabilirsiniz, ancak nodejs içinde, iyi uygulama/geçersiz global.require değiştirmek için değil.

ÖNERİSİ 1: Ben

global.p_require 

yüzden düğümünde çalışan yeni küresel işlev yapabilir; ancak, webpack kaynak kodunu değiştirmeden webpack'in "p_require" ı __webpack_require__'a ayrıştırmasına izin vermenin bir yolunu bulamıyorum.

ÖNERİSİ 2: Ben ancak

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

tarafından

global.ROOT_DIR = process.cwd() 

yüzden düğümünde çalışan yeni küresel değişkeni yapabilir, webpack dinamik gerektiren olarak bu tanıyacağını. Webpack ROOT_DIR ayrılacak şekilde bir yolu var mı? Zaten Define Plugin'u denedim, ancak webpack tarafından istek ayrıştırıldıktan sonra yüklenecek gibi görünüyor.

SORU

Herkes bir çözümü vardır veya aynı sorunu ile karşı karşıya?

+0

Webpack ve server'ı çalıştırmadan önce 'NODE_PATH' ayarlamayı denediniz mi? 'NODE_PATH = webpack',' NODE_PATH = node server.js' – rockingskier

+0

Bunu denedim. Ama sorun burada ne olur https://gist.github.com/branneman/8048520 (her zaman en iyi kesmek) – user2255895

+0

sadece burada aynı sorunu var .. çözüm buldunuz mu? – egig

cevap

1

Web paketinin daha fazlasını yapmasına izin vererek bunu ele alıyorum; "düğüm ve web paketi" yerine "web paketi: istemci ve sunucu". İstemci için bir web paketi ve sunucu için bir yapıya sahip web paketim var (ikincisi yapılandırmadaki hedef özelliği olarak 'düğüm'ü kullanır). Webpack'in ihtiyaç duyduğu dizinleri özelleştirmek kolaydır, bu yüzden çalışmasını ve düğüm için bir yapı oluşturmasına izin verirsin.

Sunucuda oluştururken, yalnızca derlenmiş sunucu yapısını gerektirir. Eğer sunucudan webpack'in oluşturduğu uygulamaya bazı şeyler iletmeniz gerekiyorsa, sunucu için kullandığınız giriş noktasında bunu kablolayın - webpack bunu commonJs modülü olarak kuracaktır, böylece giriş noktanız her ne olursa olsun sunucunun oluşturması gerektiğinde en uygun arayüzdür.