问题从条目文件访问数据库服务器/功能。

时间:2017-11-19 06:40:10

标签: javascript mysql express webpack bundle

所以我在服务器启动时连接到我的数据库。然后当我的网站被加载到条目js文件中时,我需要具有我可以调用的函数的文件来运行一些查询。我的bundler尝试构建包含数据库函数的文件,一切都崩溃了。我认为问题的根源是我正在构建我的databasemanger.js文件(即使它不应该)但我不知道如何解决这个问题。

server.js

    'use strict';
const express = require('express');
const app = express();
const path = require("path");
var Vue = require('vue');
var database = require('./databasemanager');
// Create connection to database

var DIST_DIR = path.join(__dirname, "dist"), PORT = 3000;

  app.use(express.static(DIST_DIR));


app.get("*", function (req, res) {  
  res.sendFile(path.join(DIST_DIR, "index.html"));
});

// var connection = new Connection(config);
database.connect();
app.listen(3000);

这是我的databasemanger.js

var Connection = require('tedious').Connection;
var Request = require('tedious').Request;
var ableToRun = false;

var config =
    {
        userName: '.....', // update me
        password: '....!', // update me
        server: '......', // update me
        options:
            {
                database: '.....' //update me
                , encrypt: true
            }
    };

var connection;

function connect() {
    connection = new Connection(config);
    // Attempt to connect and execute queries if connection goes through
    connection.on('connect', function (err) {
        if (err) {
            console.log(err);
            return false;
        }
        else {
            ableToRun = true;
            queryDatabase();
            return true;
        }
    }
    );
};


function queryDatabase() {
    // Read all rows from table
    request = new Request(
        "SELECT * FROM STUDENT",
        function (err, rowCount, rows) {
            if (err) {
                console.log(err);
            }
            console.log("rowCount::" + rowCount);
            console.log(rows)
            // process.exit();
        }
    );
    request.on('row', function (columns) {
        columns.forEach(function (column) {
            console.log("%s\t%s", column.metadata.colName, column.value);
        });
    });

    connection.execSql(request);
};

function unionQuery() {
    // Read all rows from table
    request = new Request(
        "SELECT * FROM STUDENT",
        function (err, rowCount, rows) {
            if (err) {
                console.log(err);
            }
            console.log("rowCount::" + rowCount);
            console.log(rows)
            // process.exit();
        }
    );
    request.on('row', function (columns) {
        columns.forEach(function (column) {
            console.log("%s\t%s", column.metadata.colName, column.value);
        });
    });

    connection.execSql(request);
};

module.exports = {
    connect: connect,
    unionQuery: unionQuery
}

mywebpack.config设置如下::

var path = require("path");

var DIST_DIR = path.join(__dirname, "dist"),
    CLIENT_DIR = path.join(__dirname, "src");

module.exports = {
    context: CLIENT_DIR,
    entry: "./index",
    output: {
        path: DIST_DIR,
        filename: "bundle.js"
    },

    resolve: {
        extensions: ['', '.js']
    }
};

在我的index.js文件中,我有这一行

let  databasemanager = require ('../databasemanager');

似乎导致了这个问题。我需要这个,因为我想在这里运行命令。 我得到的控制台上的部分错误是::

> webpack && npm start

Hash: 7cfb6092af955d7afa54
Version: webpack 2.1.0-beta.22
Time: 1458ms
     Asset     Size  Chunks             Chunk Names
index.html  1.69 kB          [emitted]
 bundle.js  1.17 MB       0  [emitted]  main
 [144] ../databasemanager.js 5.78 kB {0} [built]
 [322] ./index.js 555 bytes {0} [built]
    + 321 hidden modules

ERROR in ../~/tedious/lib/connector.js
Module not found: Error: Can't resolve 'net' in '/Users/nishantrimal/Desktop/DataBase/WebsistePresent/node_modules/tedious/lib'
 @ ../~/tedious/lib/connector.js 17:10-24
 @ ../~/tedious/lib/connection.js
 @ ../~/tedious/lib/tedious.js
 @ ../databasemanager.js
 @ ./index.js

ERROR in ../~/tedious/lib/connector.js
Module not found: Error: Can't resolve 'dns' in '/Users/nishantrimal/Desktop/DataBase/WebsistePresent/node_modules/tedious/lib'
 @ ../~/tedious/lib/connector.js 18:10-24
 @ ../~/tedious/lib/connection.js
 @ ../~/tedious/lib/tedious.js
 @ ../databasemanager.js
 @ ./index.js

最后,我的pacakage.json设置如下

{
  "name": "WebsistePresent",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node server.js",
    "dev": "webpack && npm start"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "async": "^2.6.0",
    "express": "^4.16.2",
    "lodash": "^4.17.4",
    "tedious": "^2.1.1",
    "uniq": "^1.0.1",
    "vue": "^2.5.6"
  },
  "devDependencies": {
    "eslint": "^4.11.0",
    "file-loader": "^1.1.5",
    "webpack": "^2.1.0-beta.22",
    "webpack-node-externals": "^1.6.0"
  }
}

非常感谢任何帮助!!

0 个答案:

没有答案