node.js - 部署到 Google App Engine 时出错

标签 node.js google-app-engine orm google-cloud-platform sequelize.js

我正在尝试将应用程序部署到 Google App Engine。它是一个带有 MySQL 后端的 Node.js 应用程序。我正在使用 Sequelize ORM。 Cloud SQL 实例和 App Engine 都在同一个项目中。当我尝试部署和启动应用程序时,出现以下错误。

Updating service [default] (this may take several minutes)...failed.
ERROR: (gcloud.app.deploy) Error Response: [9]
Application startup error:

> teachhub@1.0.0 start /app
> node server

/app/node_modules/sequelize/lib/sequelize.js:236
        throw new Error('The dialect ' + this.getDialect() + ' is not supported. Supported dialects: mssql, mysql, postgres, and sqlite.');
        ^

Error: The dialect my-nodejs-codelab-1217-190421 is not supported. Supported dialects: mssql, mysql, postgres, and sqlite.
    at new Sequelize (/app/node_modules/sequelize/lib/sequelize.js:236:15)
    at Object.<anonymous> (/app/models/index.js:13:18)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/app/routes/apiRoutes.js:1:72)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/app/server.js:3:14)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! teachhub@1.0.0 start: `node server`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the teachhub@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-07-08T15_03_28_369Z-debug.log

下面给出的是我的模型/index.js ...
"use strict";
var fs = require("fs");
var path = require("path");
var Sequelize = require("sequelize");
var basename = path.basename(module.filename);
var env = process.env.NODE_ENV || "development";
let keys = require(__dirname + "/../config/config.js");
keys = keys.dbConfig[env];
var db = {};
if(process.env.INSTANCE_CONNECTION_NAME){
        var sequelize = new Sequelize(process.env.INSTANCE_CONNECTION_NAME, {dialect:"mysql"});
} else if (process.env.JAWSDB_URL) {
  var sequelize = new Sequelize(process.env.JAWSDB_URL);
} else if (keys.use_env_variable) {
  var sequelize = new Sequelize(process.env[keys.use_env_variable], keys);
} else {
  var sequelize = new Sequelize(
    keys.database,
    keys.username,
    keys.password,
    keys
  );
}

有人可以帮忙吗?

最佳答案

似乎它缺少对 Sequelize 方言的定义。在你的例子“key.dialect”中,假设你已经在你的配置文件中定义了方言。方言定义了项目中使用的数据库类型,您可以在以下文档中确认:http://docs.sequelizejs.com/manual/installation/usage.html

在文档中:

const sequelize = new Sequelize({
database: 'db_name',
username: 'username',
password: null,
dialect: 'mysql'
});

在您的代码中:
enter codvar sequelize = new Sequelize( 
Keys.database,
keys.username, 
keys.password, 
keys.dialect
);

关于node.js - 部署到 Google App Engine 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51233333/

相关文章:

java - 在 Hibernate 中无需查询即可获取 JoinColumn id 值

sql - 使用linq : What gets transferred?选择特定的列

javascript - 为什么 visual studio 代码会添加破坏我的 nodejs 程序的导入语句?

node.js - EB CLI "eb create"错误 : InvalidParameterValueError - Platform ARN is invalid

java - 谷歌应用引擎电子邮件

android - Google Cloud Messaging Server 响应缓慢(1 分钟)

orm - 将属性注入(inject) JPA orm.xml?

javascript - 上传分块图像文件问题

mysql - 了解 Sequelize 中的关联

php - Google Appspot 和 Wordpress