2017-04-02 4 views
0

NodeJS httpsサーバがapi、cms、およびangleアプリを実行しています。 nodemonを使用してローカルマシン(macOS Sierra)でサーバーを起動すると、正常に動作します。 VPSで同じことをしようとすると、すべてが失敗します。 VPSについてのいくつかの詳細:NGINXをプロキシサーバとして使用し、pm2をクラスタマネージャとして使用し、encryptをsslに使用します。平均:NodeJSサービングAngular node_modulesがindex.htmlを返します。

ファイアウォール内のノードサーバの直接ポートを許可して、NGINXをバイパスする場合でも、フロントエンドとCMSは正しくロードされません。 pm2からnodemonに切り替えると何も変わりません。私たちが実際にその角度からのindex.htmlの代わりに、要求されたパッケージを返されたものを見るとき

Refused to execute script from 'https://mydomain/node_modules/jquery/dist/jquery.min.js' because 
its MIME type ('text/html') is not executable, and strict MIME typechecking is enabled. 

:コンソールを使用して

私は公共node_modulesから必要なすべての依存関係のため、このエラーメッセージが表示されます。テストの目的のために は、私は次の

app.use('/node_modules', express.static(__dirname + '/node_modules')); 
//With a copy of jquery and bootstrap 

を許可し、CMSが正しくロードされますが、角度のフロントエンドにはありません。ただし、サーバーの依存関係も表示されます。あなたは私の間違いを見つけられるのを助けてくれますか?

apiは、いくつかのサービスを使用してMongoDBと通信する単純なREST APIです。 CMSはEJS・ビュー・エンジンを使用してノードによって提供されて

//APP.JS 
    let cms = require('./routes/cms'); //An Express Router 
    let api = require('./routes/api');//An Express Router 
//The modules containing angular, jquery and bootstrap for the Angular front end and the cms 
//We separated the dependencies for the backend and frontend as a security measure 
    app.use('/node_modules', express.static(__dirname + '/public/node_modules')); 
    app.use('/api', api); //Server the api 
    app.use('/cms', cms); //Serve the cms 
//The problem is probably here 
    app.use('/', express.static(__dirname + '/public')); //Route to the angular frontend 
    app.get('/*', function(req, res){ //Support for html5Mode in Angular 
     res.sendFile(path.join(__dirname + '/public/index.html')); 
}); 
// catch 404 and forward to error handler 
    app.use(function (req, res, next) { 
     let err = new Error('Not Found\t' + req.header('Referer')); 
     err.status = 404; 
     next(err); 
}); 

//Server.JS 
let options = { 
     key: fs.readFileSync('certs/privatekey.pem'), 
     cert: fs.readFileSync('certs/certificate.pem') 
}; 
let server = https.createServer(options,app); 

//Angular Frontend index.html 

    <head> 
    <!— … —>  
     <link rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.min.css"> 
    <link rel="stylesheet" href="node_modules/font-awesome/css/font-awesome.min.css"> 
    <link rel="stylesheet" href="node_modules/animate.css/animate.min.css"> 
    <link rel="stylesheet" href="node_modules/ng-dialog/css/ngDialog.min.css"> 
    <link rel="stylesheet" href="node_modules/ng-dialog/css/ngDialog-theme-default.min.css"> 
    <link rel="stylesheet" href="node_modules/angular-moment-picker/dist/angular-moment-picker.css"> 
    <link rel="stylesheet" href="node_modules/angular-tooltips/dist/angular-tooltips.min.css"> 
    <link rel="stylesheet" href="dist/css/site.css"> 
    <!— … —> 
    </head> 


//The tree 

    ├── api.md //Some doc 
    ├── app.js 
    ├── bin  //Contains server.js 
    ├── certs 
    ├── config 
    ├── coverage 
    ├── data  
    ├── database //Link with the database 
    ├── errors 
    ├── helpers 
    ├── logs 
    ├── minigames 
    ├── node_modules //The dependencies for the server 
    ├── package.json //The package for the server 
    ├── public   
    │ ├── app  //The controllers for the Angular app 
    │ ├── app.js 
    │ ├── assets 
    │ ├── dist 
    │ ├── img 
    │ ├── index.html //Entry point for the Angular app 
    │ ├── karma.config.js 
    │ ├── node_modules //The node_modules for the Angular app 
    │ ├── npm-debug.log 
    │ ├── package.json //The package for the Angular app 
    │ ├── scss 
    │ ├── stylesheets 
    │ ├── superstatic.json 
    │ ├── tests 
    │ └── views 
    ├── routes  //Contains the routes for the Api and the CMS 
    ├── services 
    ├── test 
    ├── tools 
    └── views  //The views for the CMS 

答えて

0

公共/ node_modulesが空であるようです。 npm installはエラーを投げなかったので動作するように見えましたが、どこかで失敗しました。 sftp経由でnode_modulesをコピーすると、私の問題は解決しました。

関連する問題