2014-11-22 283 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

相关问题