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

Node.js, Express & Ghost Subdirectory URL parsing error

本文关键字:URL 子目录 错误 Ghost js Express amp Node      更新时间:2023-09-26

欢迎回答另一个关于在站点的子目录上提供Ghost的问题!

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

我可以提供根页面,但不能让Ghost显示在子目录路由上。我对以下错误(当你导航到url时显示在浏览器中)中到底发生了什么感到困惑:

    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);

有什么想法吗?

我不确定最近是否发生了变化,但现在正确的方法是:

var ghost = require('ghost'),
express = require('express'),
parentApp = express();
ghost().then(function (ghostServer) {
    parentApp.use(ghostServer.config.paths.subdir, ghostServer.rootApp);
    ghostServer.start(parentApp);
});

查看此以了解更多信息。