0

我正在嘗試部署基於NODE JS的webapp代碼。我部署一個簡單的應用程序你好世界從使用Google Cloud部署Nodejs代碼

https://github.com/GoogleCloudPlatform/nodejs-docs-samples/tree/master/appengine/hello-world

和它的工作。

附件是我的項目結構。 在客戶端文件夾中我有angular4,其中構建文件將存儲在公開 在服務器文件夾中我已定義路由。

此安裝程序正在我的本地查找。沒有錯誤。

但是,當我在谷歌雲中部署它我得到

Error: Server Error 

The server encountered a temporary error and could not complete your request. 
Please try again in 30 seconds. 

和錯誤日誌說

Error: No default engine was specified and no extension was provided. 
at View (/app/server/node_modules/express/lib/view.js:61) 
at EventEmitter.render (/app/server/node_modules/express/lib/application.js:570) 
at ServerResponse.render (/app/server/node_modules/express/lib/response.js:1008) 
at (/app/server/app.js:42) 
at Layer.handle_error (/app/server/node_modules/express/lib/router/layer.js:71) 
at trim_prefix (/app/server/node_modules/express/lib/router/index.js:315) 
at (/app/server/node_modules/express/lib/router/index.js:284) 
at Function.process_params (/app/server/node_modules/express/lib/router/index.js:335) 
at next (/app/server/node_modules/express/lib/router/index.js:275) 
at Layer.handle_error (/app/server/node_modules/express/lib/router/layer.js:67) 

任何人都可以指導我,爲什麼這個錯誤?

我的根的package.json文件運行NPM開始是

{ 
    "name": "test-application", 
    "description": "A simple application for testers who run", 
    "version": "0.0.1", 
    "private": true, 
    "license": "Apache-2.0", 
    "author": "Alaksandar Jesus Gene", 
    "repository": { 
     "type": "git", 
     "url": "" 
    }, 
    "engines": { 
     "node": ">=4.3.2" 
    }, 
    "scripts": { 
     "deploy": "gcloud app deploy", 
     "start": "node server/app.js" 
    }, 
    "dependencies": { 

    }, 
    "devDependencies": { 

    }, 
    "cloud-repo-tools": { 
     "test": { 
      "app": { 
       "msg": "Hello, world!" 
      } 
     }, 
     "requiresKeyFile": true, 
     "requiresProjectId": true 
    } 
} 

我的app.yaml文件是

# [START app_yaml] 
runtime: nodejs 
env: flex 
skip_files: 
    - ^client$ 
# [END app_yaml] 

注意點,這兩個文件是從谷歌樣品github上覆制項目和增值。

項目的文件夾結構 - 擴展

Project Folder Structure - Expanded

項目文件夾結構 - 摺疊

enter image description here

任何人都可以指導我,爲什麼這個錯誤?

回答

0

修正了它。我在app.js編碼中的錯誤

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
const http = require('http'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 

var api = require('./routes/api'); 

var app = express(); 


// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, '../public'))); 

app.use('/api', api); 
app.get('*', (req, res) => { //i think the issue was here. I had app.use 
    res.sendFile(path.join(__dirname, '/index.html')); 
}); 

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

// error handler 
app.use(function(err, req, res, next) { 
    // set locals, only providing error in development 
    res.locals.message = err.message; 
    res.locals.error = req.app.get('env') === 'development' ? err : {}; 

    // render the error page 
    res.status(err.status || 500); 
    res.render('error'); 
}); 

const port = process.env.PORT || '3000'; 
app.set('port', port); 

const server = http.createServer(app); 

server.listen(port,() => console.log(`Running on localhost:${port}`)); 

module.exports = app;