【问题标题】:With express.js can I access static files from outside my root directory?使用 express.js,我可以从根目录外部访问静态文件吗?
【发布时间】:2015-03-20 15:02:55
【问题描述】:

我有一个 express 应用程序,我将使用它作为代理来捕获从 Angular 编写的应用程序发出的一些请求。 Angular 应用程序已经存在并且具有我不想更改的构建配置。

我想在并行文件树中管理我的 Angular 和 Express 应用程序,例如:

Angular 应用程序位于以下路径 /src/angularapp/images/img1.gif

/src/expressapp/app.js

我可以从包含我的 Express.js 应用程序的并行文件树中访问 Angular 应用程序内部的静态资源吗?我已经尝试了几次,但发现很难正确配置它,所以我想知道是否有什么东西阻止了这种情况。

【问题讨论】:

    标签: angularjs express


    【解决方案1】:

    我发布此内容是因为我正在寻找答案但找不到答案。从表面上看,这一定是可能的,但我在正确配置它时遇到了很多困难。

    最后,我发现以下工作正常,但相当细微的语法差异导致事情无法按预期工作。

    在 express 根目录下有一个静态目录的简单模型很简单

    app.use (express.static( './public'));
    

    假设我的静态图片在

    /root/expressapp/public/images 
    

    我可以用http://localhost/images/image.png检索图像

    你也看到了表格

    app.use ( express.static(__dirname + '/public'));
    

    这会将第一个示例的相对路径交换为完全限定路径。

    假设我想从 Angular 应用程序的并行目录中检索图像。在这种情况下,相对路径符合我的预期

    app.use( express.static('../angularapp/images')); 
    

    现在我可以以

    的身份访问 Angular 应用程序中的图像
    http://localhost/image1.gif 
    

    因此我也可以在并行树中为目录起别名

    app.use ('/fbsite', express.static( '../angularapp/images'));
    

    并使用

    访问
    http://localhost/angularsite/image1.gif
    

    我也可以使用完全限定的路径,但如果你想这样做,你需要在路径中添加一个前导斜杠,因为 __dirname 没有尾随斜杠

    app.use('/angularimages', express.static( __dirname + '/../angularapp/images'));
    

    并使用

    访问它
    http://localhost/angularimages/image1.gif
    

    需要仔细注意路径构造,但通过一些练习,您可以组织对资源的访问,而无需在单个文件树中编写快速应用程序和前端代码。这有时可以简化重构复杂构建并增强解决方案的模块化。

    在我的例子中,我预计从 Angular-js 前端发展到涉及 React.js 的前端,这种并行文件树的方法可以增强重构,因为它隔离了系统每个子部分中复杂的构建依赖项。

    【讨论】:

    • 我可以使用绝对路径
    【解决方案2】:

    我必须使用path.join() 才能使其工作。以您为例:

    app.use(express.static(path.join(__dirname, '/../angularapp/images')))
    

    【讨论】:

      【解决方案3】:

      如果公用文件夹存在于应用程序的根文件夹中,则使用app.use('/static', express.static(path.join(__dirname, 'public'))); 如果公用文件夹存在于应用程序的根文件夹之外,则使用app.use('/static', express.static(path.join(__dirname, '../public')));

      【讨论】:

        猜你喜欢
        • 2021-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-16
        • 2013-07-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多