2012-02-24 57 views
3

我在Express/Connect/Jade/Less上使用Coffescript構建了一個Node.js應用程序。在Express/Connect內配置上下文路徑

應用程序將在幾個不同的地方和不同的上下文路徑部署,e.g

  • http://someurl.com/
  • http://someotherurl.com/andthenthispath/

我遇到了實現這一目標的問題。我的目的是爲上下文路徑使用變量,並在第二個部署位置使用環境變量填充該變量。

contextPath = process.env.CONTEXT_PATH || '' 

然後我就可以建立我的路線,像這樣,

app.get contextPath + '/', anIndexFunction 
app.get contextPath + '/bla', aBlaFunction 

這是開始顯得過於雜亂,然後我還需要在這個變量來拉這將會建立一個其他任何位置網址。

我一直在尋找一個連接中間件,將以更好的方式處理這種情況,這是否存在?還是有一個標準的方式來處理這個問題?

回答

0

我對Express並不太熟悉,但是如果您確定在出現它時總是希望將它預先加入,那麼您不能僅僅在get函數本身中加入CONTEXT_PATH值嗎?

+0

我不明白你在說什麼。上面使用的get函數(app.get)是配置路由,在這一點上沒有任何東西被獲取。我目前的解決方案已經在每個匹配器上添加上下文路徑。 – 2012-02-26 12:40:50

+0

我的意思是,在應用程序本身中添加CONTEXT_PATH,並修改內置的Express「get」函數來爲您預先設置它的值。與此處討論的內容非常相似:http://stackoverflow.com/questions/4375554/is-it-possible-to-set-a-base-url-for-nodejs-app – 2012-03-02 02:22:08

1

你可以做到這一點與快遞

const config = require('./config') 
const argv = require('yargs').argv 
const express = require('express') 
const router = express.Router() 

const app = express() 
router 
    .route('/another-path') 
    .post((req, res) => { 
     // Your code here 
    } 

const contextPath = argv.contextPath || config.contextPath || "/" 

app.use(contextPath, router) 
app.listen(port, host,() => console.log(`Server started on ${host}:${port}${contextPath}`))