2014-11-22 129 views
0

我試圖訪問包含幾個.js控制器模塊的應用程序中的文件夾。Node.js Express - 指定應用程序根目錄的路徑

在我的.html文件之一的頭我有這樣的腳本聲明:

的應用程序正在運行,應用程序似乎知道當前的路徑是什麼時候的問題是,所以我的腳本路徑與實際的文件系統無關,它與應用程序的當前路徑有關,我可能會說這是非常奇怪的。

因此,快速解決方法是輕鬆指定我的應用程序的根目錄,因爲fancy_scripts只是從根目錄下的一個文件夾。

以下是不行的,因爲我上面

<head> 
    <script type="text/javascript" src="../fancy_scripts/userHomeController.js"></script> 
</head> 

提到的問題,但必須有與類似雙斜線「//」指定應用程序的全局根的方式

<head> 
    <script type="text/javascript" src="//fancy_scripts/userHomeController.js"></script> 
</head> 

(以上也不管用,//在微軟Windows(我認爲)的根,但不是一個快速的應用程序),這是一個簡單的問題,與我希望一個簡單的解決方案。然而,可能有更好的方式來做事情。

我有這3行代碼已經:

app.use(express.static(path.join(__dirname, 'public'))); 
app.use(express.static(__dirname + '/fancy_scripts')); 
app.use('/fancy_scripts', express.static(__dirname + '/fancy_scripts')); 

回答

2

當使用快遞,路徑將通過您的申報處理程序之一或通過靜態模塊進行路由,如果你有設定。通常,Express被配置爲使用靜態並將其映射到您的應用程序公用文件夾。當使用快遞發生器時,該文件夾位於<approot>/public/。因此,爲了獲得這樣的事情:

<head> 
    <script type="text/javascript" src="/fancy_scripts/userHomeController.js"></script> 
</head> 

你需要把userHomeController在<approot>/public/fancy_scripts/userHomeController.js

+0

感謝蒂莫西 - 我加了一些信息,以問題的底部。我已經有一些代碼處理這個了。 – 2014-11-22 05:42:33

+0

這個fancy_scripts目錄在哪裏?它應該提供與您的應用程序入口點相關的文件,而不是您的操作系統根目錄。你也不應該像這樣定義多個靜態路徑。只需定義一個。請記住,您在靜態函數中指定的文件夾名稱不包含在客戶端的路徑中。 – 2014-11-22 06:43:17

+0

好的,謝謝,我用Windows作爲例子,你可以用「//」來定義根目錄。 – 2014-11-22 07:13:11

相關問題