2016-03-08 9 views
6

Przyjrzałem się podobnemu, ale nie mogłem znaleźć odpowiedzi, która rozwiązała mój problem. Nie mogę znaleźć pliku bundle.js, mimo że określam, gdzie powinien on być wyprowadzony i wszystko działa w przeglądarce. Rozumiem, że serwer webpack-dev ładuje pliki z pamięci i nic nie jest zapisywane na dysku, w jaki sposób mogę uzyskać plik do zbudowania i dodany do katalogu określonego we właściwości wyjściowej w pliku konfiguracyjnym?bundle.js brakuje w kompilacji pakietu sieciowego podczas korzystania z serwera Webpack-dev

Oto moja package.json:

{ 
    "name": "redux-simple-starter", 
    "version": "1.0.0", 
    "description": "Simple starter package for Redux with React and Babel support", 
    "main": "index.js", 
    "repository": "[email protected]:StephenGrider/ReduxSimpleStarter.git", 
    "scripts": { 
    "start": "./node_modules/webpack-dev-server/bin/webpack-dev-server.js -- content-base build" 
     }, 
     "author": "", 
     "license": "ISC", 
     "devDependencies": { 
     "babel-core": "^6.2.1", 
     "babel-loader": "^6.2.0", 
     "babel-preset-es2015": "^6.1.18", 
     "babel-preset-react": "^6.1.18", 
     "react-hot-loader": "^1.3.0", 
    "webpack": "^1.12.9", 
    "webpack-dev-server": "^1.14.0" 
    }, 
    "dependencies": { 
    "babel-preset-stage-1": "^6.1.18", 
    "react": "^0.14.3", 
    "react-dom": "^0.14.3", 
    "react-redux": "^4.0.0", 
    "redux": "^3.0.4" 
    } 
    } 

WebPack config:

var path = require('path'); 
    var webpack = require('webpack'); 

    module.exports = { 
    entry: [ 
     'webpack-dev-server/client?http://localhost:8080', 
     'webpack/hot/only-dev-server', 
     './src/index.js' 
    ], 
    output: { 
     path: path.join(__dirname, 'assets'), 
     publicPath: '/', 
     filename: 'bundle.js' 
    }, 
    module: { 
     loaders: [{ 
     exclude: /node_modules/, 
     loader: 'babel' 
     }] 
    }, 
    resolve: { 
     extensions: ['', '.js', '.jsx'] 
    }, 
    devServer: { 
     contentBase: './' 
    }, 

    plugins: [ 
     new webpack.HotModuleReplacementPlugin() 
    ] 
    };  
+2

wierzę Widziałem to już wcześniej - Nie sądzę, że podczas uruchamiania 'webpak-dev-server' faktycznie tworzony jest plik bundle.js, a raczej przechowywany w pamięci. Podejrzewam, że jeśli uruchomisz prostą komendę wanilii, która po prostu zbuduje projekt, zobaczysz plik 'bundle.js' w katalogu' assets'. Ponownie spróbuj uruchomić tylko 'webpack' z twojego terminala. – lux

+1

@lux spot on! Powinieneś to powiedzieć jako odpowiedź! – Abdi

Odpowiedz

4

Ten WebPACK plugin zmusza serwer do napisania pakiet na dysku.

Mimo że zgadzam się z Austinem i luxem, jeśli potrzebujesz pliku na dysku, zadzwoń bezpośrednio do webpacka.

5

W przypadku korzystania z serwera dev, wyjście jest umieszczony na nim. Więc nie zobaczysz tego wśród swoich plików. Z pliku index.html będziesz chciał załadować go z serwera.

Na przykład dla mojej aplikacji ładuję się na serwerze dev, pliki mojego dostawcy, a następnie mój własny kod.

<script src="http://localhost:8080/webpack-dev-server.js"></script> 
<script src="http://localhost:8080/build/vendor.js"></script> 
<script src="http://localhost:8080/build/app.js"></script> 

Tutaj znajduje się odpowiednia część mojej konfiguracji Web Pack. Jest trochę niepotrzebnych starszych bitów, od kiedy również ładowałem go ze statycznego pakietu kompilacji.

app: [ 
     'webpack/hot/dev-server', 
     'webpack-dev-server/client?http://localhost:8080', 
     './client/index.js' 
     ] 

}, 
output: { 
    path: __dirname + '/client/build', 
    publicPath: '/build/', 
    filename: '[name].js', 
    pathinfo: true 
}, 
+0

Wiem, że ładuje się z serwera Webpack, ale chciałbym, aby plik znajdował się w moim katalogu, aby mógł go używać w innym środowisku, jeśli ma to sens. – Abdi

+0

To brzmi bardziej jak problem z konstrukcją, niż problem z pakietem internetowym. Zastanowiłbym się, co próbujesz zrobić w tym przypadku, jeśli nie możesz po prostu odwołać się do kompilacji z serwera. –

+0

@AustinShoecraft po prostu wyobraź sobie środowisko dev and prod. W praktyce po prostu nie wkładaj plików js, ale w wersji deweloperskiej możesz chcieć ładować ponownie. Jeśli obsługujesz html z serwera, nie możesz korzystać z serwera webpack, ponieważ nie zmienia on plików na dysku. –

0

Możesz także powiedzieć webpackowi, aby obejrzeć, używając flagi w konfiguracji. To wygeneruje plik wiązki

module.exports = { 
    watch: true, 
}; 
0

zastąpić skrypty przedmiot pliku package.json na następujący:

"scripts": { 
    "start": "npm run build", 
    "build": "webpack -p && ./node_modules/webpack-dev-server/bin/webpack-dev-server.js -- content-base build" 
}, 

Następnie uruchom $ npm start