簡體   English   中英

Express JS獲取目錄中所有靜態文件的404

[英]Express js getting 404 for all static files in a directory

為了方便我的靜態文件,我有多個目錄。 我的某些靜態文件位於客戶端目錄中,而某些與儀表板相關的文件位於src目錄中,因此現在我的目錄結構如下

/
|
client //static files and other stuff
server //server side express, app, controller, models etc
src //other static files

我有兩個有角度的應用程序,一個在客戶端文件夾中,另一個在src文件夾中,我的服務器端路由如下:

app.route('/app/dashboard-v1').get(function(req,res){
        res.sendFile(path.join(__dirname, '../src', 'index.html'));
    });

    // All undefined asset or api routes should return a 404
    app.route('/:url(api|img|src|auth|components|app|bower_components|assets)/*')
        .get(errors[404]);

    // All other routes should redirect to the index.html
    app.route('/*')
        .get(function (req, res) {
            res.sendFile(path.resolve(app.get('appPath') + '/index.html'));
        });

所以我的第一個有角度的應用程序在app / dashboard-v1中,所有其他網址都重定向到app2

我正確地獲取了我的app2中的所有文件,但是我的第二個應用程序中的所有其他文件卻得到了404。 現在如果我注釋掉

//  app.route('/:url(api|img|src|auth|components|app|bower_components|assets)/*')
            .get(errors[404]);

我從第一個應用程序的所有文件中的第二個應用程序獲取了index.html,而不是404錯誤

我的快速配置如下-

if ('production' === env) {
    app.use(favicon(path.join(config.root, 'public', 'favicon.ico')));
    app.use(express.static(path.join(config.root, 'public')));
    app.set('appPath', path.join(config.root, 'public'));
    app.use(morgan('dev'));
  } else {
    app.use(require('connect-livereload')());
    app.use(express.static(path.join(config.root, '.tmp')));
    app.use(express.static(path.join(config.root, 'client')));
    app.use(express.static(path.join(config.root, 'src')));
    app.set('appPath', path.join(config.root, 'client'));
    app.use(morgan('dev'));
    app.use(errorHandler()); // Error handler - has to be last
  }

我認為自己的路線有問題。 我該如何解決 ? 在第一個應用程序(app / dashboard-v1)的index.html中,我添加了

<base href="/src/" />

並且我的index.html中的所有鏈接都是相對的,如下所示是src / index.html(應用程序/ dashboard-v1網址應用程序)的一個代碼塊-

<script src="vendor/angular/angular-animate/angular-animate.js"></script>
  <script src="vendor/angular/angular-cookies/angular-cookies.js"></script>

當我在瀏覽器中打開網絡控制台時,對服務器的請求是這樣的-

Request URL:http://localhost:9000/src/vendor/angular/angular-animate/angular-animate.js

我在瀏覽器控制台中收到404狀態代碼的信息

您是否在示例的/目錄中運行該應用程序?

我認為您可以將__dirname設置為靜態文件夾

app.use('/',express.static(__dirname));

或者,如果您願意,可以設置特定的文件夾:

app.use("/public", express.static(__dirname + "/public"));
app.use("/public2", express.static(__dirname + "/public2"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM