当前位置: 首页 > 面试题库 >

是否可以为NodeJS应用设置基本URL?

终安和
2023-03-14
问题内容

我希望能够在同一域下托管多个NodeJS应用程序,而无需使用子域(例如google.com/reader而不是images.google.com)。问题是我总是在Express
/ NodeJS中键入URL的第一部分,例如“ / reader”。

如何设置Express应用程序,使基本URL为something.com/myapp

所以代替:

app.get("/myapp", function (req, res) {
   // can be accessed from something.com/myapp
});

我可以:

// Some set-up
app.base = "/myapp"

app.get("/", function (req, res) {
   // can still be accessed from something.com/myapp
});

我还想将Connect的staticProvider配置为以相同的方式运行(目前,默认情况下,它向something.com/jssomething.com/css代替向something.com/myapp/js)提供静态文件


问题答案:

目前尚不支持此功能,要自己添加它并不容易。

整个路由选择的东西都​​埋在服务器代码的深处,此外,他们自己的路由也没有暴露。

我仔细研究了源代码,还检查了Express和Connect中间件的最新版本,但是仍然不支持此类功能,您应该在Connect或Express本身上打开一个问题。

与此同时…

自己修补事物,这是一种快速简便的方法,只需更改一行代码即可。

在中~/.local/lib/node/.npm/express/1.0.0/package/lib/express/servers.js,搜索:

// Generate the route
this.routes[method](path, fn);

这应该在line周围357,替换为:

// Generate the route
this.routes[method](((self.settings.base || '') + path), fn);

现在只需添加设置:

app.set('base', '/myapp');

这对于纯字符串路径可以很好地工作,为了获得RegEx支持,您将不得不自己在路由器中间件中乱砍,在这种情况下最好提出问题。

就静态提供程序而言,只需在/mypapp设置它时添加即可。

更新资料

也使其与RegExp一起工作:

// replace
this.routes[method](baseRoute(self.settings.base || '', path), fn);

// helper
function baseRoute(base, path) {
    if (path instanceof RegExp) {
        var exp = RegExp(path).toString().slice(1, -1);
        return new RegExp(exp[0] === '^' ? '^' + base + exp.substring(1) : base + exp);

    } else {
        return (base || '') + path;
    }
}

我仅使用少数几个表达式对此进行了测试,因此并未进行100%的测试,但从理论上讲应该可以。

更新2

对该修补程序提出了问题:https :
//github.com/visionmedia/express/issues/issue/478



 类似资料:
  • 问题内容: 我知道可以偏斜,但我看不到以特定角度偏斜每个角的方法。 这是我正在从事的项目: 专门查看菜单中的标签。现在,我正在使用图像,我想针对功能强大的浏览器进行更改。 我知道可以创建CSS trapazoid,但是使用没有内容的边框。最终结果还需要一些圆角。 问题答案: 这可能是一个大概的想法:

  • 问题内容: 我有一个需要样式的HTML选择框。我宁愿只使用CSS,但是如果需要的话,我将使用jQuery填补空白。 谁能推荐一个好的教程或插件? 我知道,Google,但是我一直在搜索过去两个小时,但找不到符合我需要的内容。 它必须是: 与jQuery 1.3.2兼容 无障碍 不打扰 可以根据样式选择框的各个方面进行完全自定义 有人知道什么可以满足我的需求吗? 问题答案: 我已经看到了一些jQue

  • 问题内容: 我想平稳地向下滚动。我不想为此写函数-特别是如果jQuery已经有一个函数。 问题答案: 您可以只使用该属性,如下所示:

  • 我在这里学习Web Push,然后成功地一步一步地构建示例通知Web应用程序,使用Push Companion,现在对于服务器端,我能够将消息发送到“fcm.googleapis.com”,然后任何订阅该endpoint(fcm.googleapis.com)的客户端都可以在网页关闭时收到通知。这很好,但我担心的是商业案例,出于安全原因,不可能将敏感数据发送到公司的开放endpoint,例如“fc

  • 问题内容: 我需要为整个应用程序使用某些字体。我有同样的.ttf文件。是否可以在应用程序启动时将此字体设置为默认字体,然后在应用程序中的其他位置使用它?设置后,如何在布局XML中使用它? 问题答案: 是的,反思。这有效(基于此答案): (注意:由于缺乏对自定义字体的支持,因此这是一种解决方法,因此,如果你要更改此情况,请在此处加注星号以投票赞成android问题)。注意:请勿在该问题上留下“我也”

  • 问题内容: 我一直在寻找一种为CURL指定cookie数据的方法。我已经找到了一些有关如何从访问的页面保存cookie的解决方案,但这不是我所需要的。我想要的是自己写Cookie的数据,以便CURL使用它。 问题答案: 您确实应该阅读该文档 -其中列出了与您期望的关键字完全相同的文档,并且包含许多有用的信息: -b,-cookie (HTTP)将数据作为cookie传递到HTTP服务器。可能是先前