2016-02-05 55 views
0

我已經建立了使用巴貝爾爲ES6 transpilation與以下預置我用的WebPack項目:運行react/redux應用程序所需的最低server.js?

{ 
    "presets": ["react", "es2015", "stage-1"] 
} 

而且生產的WebPack配置看在下列方式:

var path = require('path'); 
var node_modules_dir = path.resolve(__dirname, 'node_modules'); 

module.exports = { 
    entry: [ path.resolve(__dirname, 'src/index.js') ], 
    output: { 
    path: path.resolve(__dirname, 'dist'), 
    filename: 'bundle.js' 
    }, 
    module: { 
    loaders: [{ 
     test: /\.(js|jsx)$/, 
     exclude: [node_modules_dir], 
     loader: 'babel' 
    }, 
    { 
     test: /\.(png|jpg)$/, 
     exclude: [node_modules_dir], 
     loader: 'url?limit=100000' 
    }, 
    { 
     test: /\.svg$/, 
     exclude: [node_modules_dir], 
     loader: 'svg-url-loader' 
    }, 
    { 
     test: /\.scss$/, 
     exclude: [node_modules_dir], 
     loader: 'style!css!sass' 
    }] 
    }, 
    resolve: { extensions: ['', '.js', '.jsx'] } 
}; 

,我想現在部署它到服務器。生產準備文件位於dist文件夾,因此:

dist/ 
    index.html 
    bundle.js 

我提到這一點,因爲我需要我的切入點是dist/index.html

由於我以前從未部署,我不確定我的server.js文件應該看起來如何,經過一些研究似乎我需要使用http服務器或express服務器,以及一些babel蒸騰以及es6語法。

什麼是可以使用的最小設置?

+0

react和redux都是客戶端。你可以使用任何HTTP服務器,包括像Python SimpleHTTPServer一樣簡單的服務。如果你想使用nodejs,那麼谷歌「http服務器nodejs」,這應該引導你大量的相關資源。 – Goblinlord

回答

0

React/redux是客戶端,即瀏覽器執行您的代碼,服務器只需要在那裏。

您的服務器不需要做任何聰明的事情,就像編譯過程一樣,因爲您的編譯過程已經完成並創建了一個準備在瀏覽器中執行的「包」。因此,快速靜態服務器(例如使用Nginx,Apache或Varnish的服務器)只需提供dist文件夾的內容。

節點,Python,任何,都可以使用,但你不需要它們,你只需要提供文件。

+0

那麼,如何簡單地在瀏覽器中打開索引文件,這種方法不起作用? (從我的電腦) – Ilja

+0

你的index.html或js文件是否包含任何外部鏈接?如字體,圖像或通過某種類型的cdn可能依賴關係?文件協議將不允許外部鏈接。從file://和本地服務器運行並不是一回事。你會得到什麼錯誤? –

+0

刪除谷歌字體,因爲我包括他們通過cdn,但是沒有顯示出來,我得到的錯誤是這一個:'未捕獲SecurityError:無法執行'歷史''replaceState':一個歷史狀態對象與URL'文件:///../index.html'不能在源文件'null'中創建。' – Ilja

相關問題