【问题标题】:Vue.js web application using a Node.js connection with mysql-sshVue.js Web 应用程序使用带有 mysql-ssh 的 Node.js 连接
【发布时间】:2020-03-25 20:19:40
【问题描述】:

我正在使用 Vue.js 创建一个前端 Web 应用程序的课程项目。我对前端和后端如何相互交流非常陌生。我的队友在下面创建了 Node.js 代码(省略了敏感信息):

const mysqlssh = require('mysql-ssh');
const fs = require('fs');
var commands = require('./commandList');
var command = commands.cmd;
var output;
mysqlssh.connect(
    {
        host: 'address',
        user: 'root',
        password: 'pwd'
    },
    {
        host: 'localhost',
        user: 'root',
        password: 'pws',
        database: 'db-name'
    }
)
.then(client => {
    client.query(command, function (err, results, fields) {//command is query
        if (err) throw err//throws error if anything in the connection goes wrong
        console.log(results);//logs results of query
        output = JSON.stringify(results);//output = results of query
       // var i = output.lastIndexOf('"');//gets last "
       // output = output.slice(0, i);//slices off last " and everything after it
        //i = output.lastIndexOf('"');//gets new last "
       // output = output.slice(i+1, output.length);//slices new last " and everything before it
       // console.log(output);//prints output to console
        mysqlssh.close()//close sql ssh
    })
})
.catch(err => {
    console.log(err)
    })

运行node db.js时文件运行良好

但是,当我尝试使用 importrequire 甚至将其复制并粘贴到我的 App.vue 文件中时,该项目会抛出一个非描述性的编译错误:
警告:在 ./node_modules/defaultable/defaultable.js 关键依赖:依赖的请求是一个表达式
Compile Error
在浏览器中查看项目时,我在控制台中看到此错误:
未捕获的错误:找不到模块“网络”。
Browser Error
这似乎是 Node.js 的 net 模块的一部分,据我了解,它不能在浏览器上运行。我不是在寻找代码评论,但我想知道是否有一种方法可以在不修改连接到 MySQL 数据库的代码的情况下实现此设置。

【问题讨论】:

标签: mysql node.js vue.js ssh npm-run


【解决方案1】:

经过数小时的辛勤工作后,答案是使用 Express 作为路由器来建立另一个单独运行节点服务器的包,最终结果如下:

const express = require('express');
const mysqlssh = require('mysql-ssh');

const router = express.Router();

var output;

// Get App User
router.get('/user', (req, res) => {
    var query = "SELECT * FROM APPUSERS WHERE EMAIL = 'sample@email.com';";
    var result = connectAndQuery(query);
    setTimeout(function(){
        res.send(output);
    }, 3000);
});




function connectAndQuery(command) {
    mysqlssh.connect(
        {
            host: 'address',
            user: 'root',
            password: 'pwd'
        },
        {
            host: 'localhost',
            user: 'root',
            password: 'pwd',
            database: 'db-name'
        }
    )
        .then(client => {
            client.query(command, function (err, results) {//command is query
                if (err) throw err;//throws error if anything in the connection goes wrong
                output = JSON.stringify(results);

                mysqlssh.close();//close sql ssh
                return output;
            })
        })
        .catch(err => {
            console.log(err)
        })
}

module.exports = router;

【讨论】:

    猜你喜欢
    • 2014-11-26
    • 2019-06-20
    • 2021-07-24
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    相关资源
    最近更新 更多