0

我使用的是Yeoman 的 angular generator附带的grunt-contrib-connect

我还有一个带有翡翠视图的 node.js express 应用程序,我想在其中引用 .js、.css、.html 但似乎 grunt-contrib-connect 和 express 不能共享相同的端口。

在我的玉观中:

link(rel='stylesheet', href='styles/main.css')

在我的 grunt.js 中:

connect: {
  options: {
    port: 9000, 
    hostname: 'localhost'
  },
  livereload: {
    options: {
      middleware: function (connect) {
        return [
          lrSnippet,
          mountFolder(connect, '.tmp'),
          mountFolder(connect, yeomanConfig.app)
        ];
      }
    }
  },

在我的 app.js 中:

app.set('port', process.env.PORT || 3000);

如果我将此端口更改为 9000,我只能获得由 grunt-contrib-connect 提供的静态文件,而没有 express 应用程序的资源。

你能让 grunt-contrib-connect 和 node.js 在同一个端口上很好地协同工作吗?

4

2 回答 2

1

我不确定您的最终目标是什么,但我认为您实际上只有一个由 Yeoman 提供支持的 Web 应用程序,您希望在其中使用 Express 之类的东西来呈现 Jade 视图。如果是这种情况,我会查看David Moro 的指南,以更新使用 Yeoman 的 Angular Generator 创建的项目以使用 Express 作为服务器。

当我想将我的站点从静态页面更新为也可以使用服务器端模板的东西时,我使用了它。使用此设置,您将不再在开发过程中使用 Connect,而是使用 Express 进行所有操作。请务必查看他的 GitHub 链接,以确保您了解他所做的所有更改。

于 2013-12-16T11:12:20.533 回答
1

您可以通过bouncy包启动代理:

var bouncy = require('bouncy');

var server = bouncy(function (req, res, bounce) {
    if (req.headers.host === 'cdn.example.com') {
        bounce(gruntConnectPort);
    } else if (req.headers.host === 'example.com') {
        bounce(expressPort);
    } else {
        res.statusCode = 404;
        res.end('no such host');
    }
});
server.listen(anotherPort);

随意调整它,如果它适合你。

于 2013-11-04T12:03:33.857 回答