2017-06-24 9 views
-1

私はサブパスで複数の角型アプリケーションを使用しています。各SPAには、物事を蹴散らすインデックスファイルがあります。親ディレクトリからエクスプレスサーバを実行すると、サブディレクトリ内のインデックスファイルは、親ディレクトリから始まる静的ファイルの要求を行おうとします。私は相対ファイルパスを使用できるはずですが、それらはすべてサーバーのルートから開始します。どうして?下の私の例(test-route)で見ることができるように、/ testRoute/test.jsではなくmainディレクトリからtest.jsを要求しようとします。私は 'test.js'、 '/ test.js /'、 '/ test.js'を試しました。サブディレクトリのインデックスファイルは常に、相対パスをサーバーのルートにしようとします。どうして?Express.js内のサブディレクトリインデックスファイルに対するサーバ静的ファイルの関係


          
  
// server.js 
 

 
    // BASE SETUP 
 
    // ============================================== 
 

 
    var express = require('express'); 
 
    var path = require('path'); 
 
    var app = express(); 
 
    var port = process.env.PORT || 8080; 
 

 
    // ROUTES 
 
    // ============================================== 
 

 
    // sample route with a route the way we're used to seeing it 
 
    app.use('/testRoute', express.static('testRoute')); 
 

 

 
    app.get('/', function(req, res) { 
 
     var options = { 
 
      root: __dirname + '/' 
 
     }; 
 

 
     res.sendFile('index.html',options); 
 
    }); 
 

 
    app.get('/test-route', function(req, res) { 
 
     var options = { 
 
      root: __dirname + '/testRoute' 
 
     }; 
 

 
     res.sendFile('index.html',options); 
 
    }); 
 

 

 

 
    app.listen(port);
<!--Test Route Index --> 
 
    <html> 
 
    <head> 
 
     <script src="test.js"></script> 
 
    </head> 
 
    <h1>Test Route</h1> 
 
    </html>

答えて

0

私はこれを処理しています方法は、それがexpressアプリケーションを所有していたアプリケーションの各部分を作ることです。こうすることで、独自の静的フォルダを定義できます。 expressアプリにapp.use('/test-route', myTestRouteApp)というものを貼り付けるだけです。

これはあなたのsecond-app.jsです:

const express = require('express'); 
 

 
module.exports =() => { 
 
    const app = express(); 
 
    app.use('/static', express.static(...)); 
 
    ... 
 
    return app; 
 
};

これはあなたのapp.jsです:

const express = require('express'); 
 

 
const secondApp = require('./second-app'); 
 

 
module.exports =() => { 
 
    const app = express(); 
 
    
 
    app.use('/second-app', secondApp()); 
 
    ... 
 
    return app; 
 
};

アプリを起動したら、それで、あなたは今/second-app/static/にアクセスすることができます。

+0

これらはすべて同じドメインで実行できますか?私は、アプリケーション間でローカルストレージを共有する必要があります。 – user2808895

+0

私の応答にコード例を追加しました。それがより明確であることを願っています。 – Danosaure

+0

これはあなたが探していたことをしましたか? – Danosaure

関連する問題