如何在nodeJS应用程序中启动angular2

时间:2017-02-08 05:55:38

标签: node.js angular webpack

这个看似简单的问题现在阻挡了我的大脑,希望得到你的帮助。

我现在正在使用webpack启动angular2应用程序,很好,只需运行npm start,在现实中,它运行此命令来提升angular2项目

webpack-dev-server --inline --progress --port 8080

现在一切都很好,直到我想开始实际开发。我们的实际开发是使用nodeJS,我想使用nodeJS来提升整个angular2项目。我知道我可以使用npm build来构建angular项目,然后在nodeJS / express中使用静态页面来loda那个静态页面。这适用于部署或生产环境。但是对于开发,我该怎么办?

如上所述,我正在使用webpack-dev-server来提升ng2项目,它正在阅读很多webpack.configuration,例如类型脚本加载器,sass loader,默认情况下它是端口8080,但在我的nodeJs项目中,它正在使用"节点应用"开始,端口是3000.显然,这导致了跨域问题。

那么可以让nodeJS在ng2中增强我的本地开发环境,以避免跨域问题吗?如果我使用nodeJS,那么webpack解决方案在哪里?

希望听到你的建议

1 个答案:

答案 0 :(得分:0)

您可以尝试两种解决方案。在两者中你需要有2台服务器:webpack和你的。两者都适用于任何后端。

  1. 在服务器响应上启用CORS。这可能很棘手。此外,它并不真正复制生产行为(文件夹结构,URL路径等)
  2. 将所有非webpack输出代理到您的服务器。这是通过webpack配置中的几行来实现的,但它确实很好,因为你仍然会看到你在生产中看到的非角度页面,内容,静态文件等。什么也好,你可以指定你的生产(阶段,开发,等等)服务器作为目标,根本没有在你的机器上运行后端。
  3. 这是方法:

    devServer: {
       port: 8080,
       proxy: { '**': { target: 'http://localhost:3000', secure: false, headers } }
     },
    

    这将在8080上启动角度服务器,并将任何非webpack生成的文件重定向到目标。