2016-03-11 26 views
7

Tôi có cấu hình webpack cho máy chủ nút đang chạy với Express. Tệp nhập nếu nó đang trong quá trình sản xuất chạy máy chủ Express, nếu trong quá trình phát triển cũng chạy Express Server và máy chủ Webpack Dev. Vấn đề nằm khi máy chủ webpack dev được khởi tạo; nó than phiền về các đường dẫn Unhandled rejection Error: invalid argument hoặc không tìm thấy. Cấu hình máy khách được sử dụng trong máy chủ webpack dev chạy tốt khi được sử dụng trên chính nó từ CLI, nó cũng hoạt động khi webpackdevserver được khởi tạo trong một tệp (không đi kèm) thông thường.Chạy máy chủ Webpack Dev bên trong gói webpack

Sự khác biệt từ mỗi phương pháp là đường dẫn được in từ cấu hình khác nhau giữa các trường hợp hoạt động và trường hợp không hoạt động. Những đường dẫn này được giải quyết từ __dirname khác nhau trong mỗi trường hợp. Tại sao có thể là lý do cho điều này, và có thể có được đường dẫn __dirname bình thường không?

Xin cảm ơn trước.

server Config:

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

Khách hàng Config:

{ 
    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

console.log('hello world'); 

cấu trúc mã

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

Lỗi 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

Bạn có thể cung cấp liên kết đến tệp 'webpack.config.js' của mình không? –

+0

Ok, tôi đã bao gồm các tệp cấu hình và một số cấu trúc mã. Và ngăn xếp lỗi tôi nhận được. –

+0

Tôi có cùng một vấn đề. Bất cứ cập nhập nào? –

Trả lời

9

output.path trong webpack.config.js nên tuyệt đối con đường ví dụ /home/user/../
Đó lỗi cố định cho tôi.

+0

Tôi theo nghĩa đen sẽ có con cái tượng trưng cho câu trả lời này ... –

Các vấn đề liên quan