我正在尝试将应用程序部署到 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/