【问题标题】:Deployment of Nodejs Code with Google Cloud使用 Google Cloud 部署 Nodejs 代码
【发布时间】:2018-03-18 06:50:03
【问题描述】:

我正在尝试部署基于 NODE JS 构建的 webapp 代码。我从

部署了一个简单的应用程序 hello-world

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)

谁能指导我为什么会出现这个错误?

我运行 npm start 的根 package.json 文件是

{
    "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]

请注意,这两个文件都是从 google 示例 github 项目中复制并添加了值。

项目文件夹结构 - 展开

项目文件夹结构 - 折叠

谁能指导我为什么会出现这个错误?

【问题讨论】:

    标签: node.js google-app-engine app-engine-flexible google-appengine-node


    【解决方案1】:

    修复它。我在 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;
    

    【讨论】:

      猜你喜欢
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      • 2019-05-19
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多