Node.js,Express& Ghost子目录URL解析错误

时间:2014-09-21 00:21:07

标签: javascript node.js express ghost-blog node-http-proxy

欢迎来到关于在网站的子目录中提供Ghost的另一个问题!

我已经设置了一个代理服务器,因为许多线程已经详细(仍然没有文档....)和这个Github配置文件详细信息(https://github.com/owenscott/hapi-ghost-proxy-example/blob/master/config.js)。

我可以提供根页面,但无法让Ghost显示在子目录路径上。我对以下错误中发生的事情感到困惑(当您导航到网址时在浏览器中显示):

    TypeError: Parameter 'url' must be a string, not undefined
   at Url.parse (url.js:107:11)
   at Object.urlParse [as parse] (url.js:101:5)
   at Object.common.setupOutgoing (C:\dev\projects\warpspeed\node_modules\http-proxy\lib\http-proxy\common.js:71:11)
   at Array.stream [as 3] (C:\dev\projects\warpspeed\node_modules\http-proxy\lib\http-proxy\passes\web-incoming.js:109:14)
   at ProxyServer.<anonymous> (C:\dev\projects\warpspeed\node_modules\http-proxy\lib\http-proxy\index.js:80:21)
   at ghost.config (C:\dev\projects\warpspeed\server.js:23:8)
   at Layer.handle [as handle_request] (C:\dev\projects\warpspeed\node_modules\express\lib\router\layer.js:76:5)
   at next (C:\dev\projects\warpspeed\node_modules\express\lib\router\route.js:100:13)
   at Route.dispatch (C:\dev\projects\warpspeed\node_modules\express\lib\router\route.js:81:3)
   at Layer.handle [as handle_request] (C:\dev\projects\warpspeed\node_modules\express\lib\router\layer.js:76:5)

我猜这与通过ghost进行路由有关,详见我的server.js文件(如下)。

var express = require('express');
var ghost = require('ghost');
var httpProxy = require('http-proxy');
var path = require('path');

var app = express();
var proxy = new httpProxy.createProxyServer();

//routes
app.get('/', function(req, res){
    res.send('Coming soon...')
});
//ghost routes
app.get('/nowhammystop', function(req, res, next){
    proxy.web(res, req, {
        target: 'http://localhost:22889'
    });
});

//start Ghost
ghost({
    config: path.join(__dirname, 'node_modules/ghost/config.js')
});

var server = app.listen(12942);

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我不确定这最近是否已经改变,但现在正确的方法是:

var ghost = require('ghost'),
express = require('express'),
parentApp = express();

ghost().then(function (ghostServer) {
    parentApp.use(ghostServer.config.paths.subdir, ghostServer.rootApp);
    ghostServer.start(parentApp);
});

查看this out了解详情。