2016-02-05 27 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

相关问题