2016-03-11 18 views
7

Express ile çalışan bir düğüm sunucusu için web paketi yapılandırmam var. Geliştirme aşamasındaysa, Express sunucusunu ve Webpack Dev Server'ı çalıştırıyorsa, giriş dosyası Express sunucusunu çalıştırır. Sorun, webpack dev sunucusu başlatıldığında yatar; Unhandled rejection Error: invalid argument hakkında şikayet eder veya bulunamadı yolları. Webpack dev sunucusunda kullanılan istemci yapılandırması, CLI'den kendi başına kullanıldığında iyi çalışır, ayrıca webpackdevserver düzenli (paketlenmemiş) bir dosyada başlatıldığında çalışır.Webpack Dev Server'ın bir web paketi paketi içinde çalıştırılması

Her yöntemdeki fark, yapılandırmadan yazdırılan yolların, çalışmakta olan ve olmayanlar arasında farklı olan yollardır. Bu yollar, her durumda farklı olan __dirname'den çözülür. Bunun nedeni neden olabilir ve normal __dirname yolunu elde etmek mümkün mü?

Şimdiden teşekkürler.

Sunucu Yapılandırma:

{ 
    target: 'node', 
    entry: rootDirectory, 
    externals: nodeModules,//readDirSync('node_modules').filter(x => x !== '.bin'), 
    output: { 
    path: join(rootDirectory, 'build'), 
    filename: 'index.js' 
    }, 
    module: { 
    loaders: [ 
     { 
     test: /\.js$/, 
     exclude: /node_modules/, 
     loader: 'babel' 
     } 
    ] 
    }, 
    plugins: [ 
    new DefinePlugin({ 
     'process.env': { 
     'NODE_ENV': JSON.stringify('development'), 
     'PORT': 8080, 
     'SERVER': true, 
     'CLIENT': false 
     } 
    }) 
    ], 
    node: { 
    __dirname: false, 
    __filename: false 
    } 
}; 

Müşteri Yapılandırma:

{ 
    entry: { 
    client: [ 
     'webpack-dev-server/client?http://localhost:8080', 
     'webpack/hot/only-dev-server', 
     './client' 
    ] 
    }, 
    output: { 
    path: join(rootDirectory, 'public'), 
    filename: 'bundle.js', 
    publicPath: '' 
    }, 
    module: { 
    loaders: [ 
     { 
     test: /\.js$/, 
     exclude: /node_modules/, 
     loader: 'babel' 
     } 
    ] 
    }, 
    plugins: [ 
    // new DefinePlugin({ 
    // 'process.env': { 
    //  'NODE_ENV': JSON.stringify('development'), 
    //  'PORT': 8080, 
    //  'SERVER': false, 
    //  'CLIENT': true 
    // } 
    // }), 
    new HTMLWebpackPlugin({ 
     template: './index.tmp.html', 
     filename: 'index.html', 
     chunks: ['client'] 
    }), 
    new webpack.HotModuleReplacementPlugin() 
    ] 
} 

index.js

import devServer from './devServer'; 
import server from './server'; 

const PORT = process.env.PORT || 8080; 

switch (process.env.NODE_ENV || 'development') { 
    case 'development': devServer(PORT); 
    case 'production': server(PORT - 1); 
} 

devServer.js

// import Express from 'express'; 
import webpack from 'webpack'; 
import WebpackDevServer from 'webpack-dev-server'; 
// import webpackDevMiddleware from 'webpack-dev-middleware'; 
// import webpackHotMiddleware from 'webpack-hot-middleware'; 

import {join} from 'path'; 

import config from './webpack/dev/client.config'; 

export default (PORT) => { 
    // let app = new Express(); 
    let compiler = webpack(config); 
    let serverOptions = { 
    inline: true, 
    hot: true, 
    contentBase: '/public', 
    publicPath: config.output.publicPath, 
    proxy: { 
     '*': `http://localhost:${PORT - 1}` 
    } 
    } 
    let app = new WebpackDevServer(compiler, serverOptions); 
    app.listen(PORT); 
} 

client.js webpack.config.js yılında

console.log('hello world'); 

kod yapısı

./index.js 
./server.js 
./devServer.js 
./client.js 
./webpack/dev/server.config.js 
./webpack/dev/client.js 
./public 
./build 

Hata Stack

Unhandled rejection Error: invalid argument 
    at pathToArray (/Users/AJ/Desktop/winebox/node_modules/memory-fs/lib/MemoryFileSystem.js:44:10) 
    at MemoryFileSystem.mkdirpSync (/Users/AJ/Desktop/winebox/node_modules/memory-fs/lib/MemoryFileSystem.js:139:13) 
    at MemoryFileSystem.(anonymous function) [as mkdirp] (/Users/AJ/Desktop/winebox/node_modules/memory-fs/lib/MemoryFileSystem.js:279:34) 
    at Compiler.<anonymous> (/Users/AJ/Desktop/winebox/node_modules/webpack/lib/Compiler.js:229:25) 
    at Compiler.next (/Users/AJ/Desktop/winebox/node_modules/tapable/lib/Tapable.js:67:11) 
    at /Users/AJ/Desktop/winebox/node_modules/html-webpack-plugin/index.js:163:9 
    at PassThroughHandlerContext.finallyHandler (/Users/AJ/Desktop/winebox/node_modules/bluebird/js/release/finally.js:55:23) 
    at PassThroughHandlerContext.tryCatcher (/Users/AJ/Desktop/winebox/node_modules/bluebird/js/release/util.js:16:23) 
    at Promise._settlePromiseFromHandler (/Users/AJ/Desktop/winebox/node_modules/bluebird/js/release/promise.js:503:31) 
    at Promise._settlePromise (/Users/AJ/Desktop/winebox/node_modules/bluebird/js/release/promise.js:560:18) 
    at Promise._settlePromise0 (/Users/AJ/Desktop/winebox/node_modules/bluebird/js/release/promise.js:605:10) 
    at Promise._settlePromises (/Users/AJ/Desktop/winebox/node_modules/bluebird/js/release/promise.js:684:18) 
    at Async._drainQueue (/Users/AJ/Desktop/winebox/node_modules/bluebird/js/release/async.js:126:16) 
    at Async._drainQueues (/Users/AJ/Desktop/winebox/node_modules/bluebird/js/release/async.js:136:10) 
    at Immediate.Async.drainQueues [as _onImmediate] (/Users/AJ/Desktop/winebox/node_modules/bluebird/js/release/async.js:16:14) 
    at processImmediate [as _immediateCallback] (timers.js:383:17) 
+0

'webpack.config.js' dosyanıza bir bağlantı verebilir misiniz? –

+0

Tamam, yapılandırma dosyalarını ve kod yapısının bazılarını ekledim. Ve aldığım hata yığını. –

+0

Aynı sorun var. Herhangi bir güncelleme var mı? –

cevap

9

output.path mutlak yol yani /home/user/../
benim için sabit hata That olmalıdır.

+0

için path.join 'in yerini almaktı. –

İlgili konular