最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

多个功能导出不起作用

网站源码admin27浏览0评论

多个功能导出不起作用

多个功能导出不起作用

这是我的 demo_db.js。

const { json } = require("express");
const mysql = require("mysql");

const con = mysql.createConnection({
  host: "127.0.0.1",
  user: "root",
  password: "ank@123",
  database: "usersdb",
  port: 3306,
  multipleStatements: true,
});

con.connect((err) => {
  if (err) {
    console.error("Error connecting to the database:", err);
    return;
  }
  console.log("Connected");
});

const insertData = (id, name, callback) => {
  const userData = [[id, name]];
  con.query(
    "INSERT INTO users (id, name) VALUES ?",
    [userData],
    function (err, result) {
      if (err) {
        console.error("Error inserting data:", err);
        callback(err, null);
      } else {
        console.log("Number of records inserted: " + result.affectedRows);
        callback(null, { id, name });
      }
    }
  );
};

const getData = (callback) => {
  con.query("SELECT * FROM users", function (err, result) {
    if (err) {
      console.error("Error retrieving data:", err);
      callback(err, null);
    } else {
      console.log(result);
      const jsonData = JSON.stringify(result);
      callback(null, jsonData);
    }
  });
};

module.exports = { getData, insertData };


这是我的app.js。它有2个api,一个是从DB获取数据,另一个是向DB添加数据。


const express = require("express");
const app = express();
const fs = require("fs");
const { people } = require("./data2");
const insertData = require("./demo_db");
const getData = require("./demo_db");
// const people = require("./routes/people");
// const auth = require("./routes/auth");

// //static assets
app.use(express.static("./methods-public"));
// //parse form data
app.use(express.urlencoded({ extended: false }));

app.use(express.json());

// app.use("/api/people", people);

// app.use("/login", auth);

app.get("/api/people", (req, res) => {
  getData((err, result) => {
    if (err) {
      return res.status(500).json({ error: err });
    }
    res.json({ data: result });
  });
});

app.post("/api/people/add", (req, res) => {
  const { id, name } = req.body;
  insertData(id, name, (err, insertedData) => {
    if (err) {
      return res.status(500).json({ error: "Failed to insert data" });
    }
    res.json({ message: "Data inserted successfully", data: insertedData });
  });
});

app.listen(5000, () => {
  console.log("Server is listening on port 5000....");
});

两种方法单独工作都很好。
如果我在 demo_db.js 中只有一种方法,那么它就可以正常工作,

如果我尝试导出 2 个模块,则会显示错误。

错误是:

TypeError: getData is not a function
    at C:\Users\yamab\Desktop\node-express-course\node-express-course\02-express-tutorial\app.js:22:3
    at Layer.handle [as handle_request] (C:\Users\yamab\Desktop\node-express-course\node-express-course\02-express-tutorial\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\yamab\Desktop\node-express-course\node-express-course\02-express-tutorial\node_modules\express\lib\router\route.js:144:13)
    at Route.dispatch (C:\Users\yamab\Desktop\node-express-course\node-express-course\02-express-tutorial\node_modules\express\lib\router\route.js:114:3)   
    at Layer.handle [as handle_request] (C:\Users\yamab\Desktop\node-express-course\node-express-course\02-express-tutorial\node_modules\express\lib\router\layer.js:95:5)
    at C:\Users\yamab\Desktop\node-express-course\node-express-course\02-express-tutorial\node_modules\express\lib\router\index.js:284:15
    at Function.process_params (C:\Users\yamab\Desktop\node-express-course\node-express-course\02-express-tutorial\node_modules\express\lib\router\index.js:346:12)
    at next (C:\Users\yamab\Desktop\node-express-course\node-express-course\02-express-tutorial\node_modules\express\lib\router\index.js:280:10)
    at C:\Users\yamab\Desktop\node-express-course\node-express-course\02-express-tutorial\node_modules\body-parser\lib\read.js:137:5
    at AsyncResource.runInAsyncScope (node:async_hooks:203:9)

任何人都遇到过这个问题,

如何解决这个错误

回答如下:

你应该像这样导入它:

const { insertData, getData } = require("./demo_db");

既然你像这样导出它:

module.exports = { getData, insertData };

如果您想加深对进出口的了解,我建议您看一下这个文档,这将大大增强您的理解:

https://developer.mozilla/en-US/docs/Web/JavaScript/Reference/Statements/export

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论