【问题标题】:Modules and require()模块和 require()
【发布时间】:2019-07-01 21:18:30
【问题描述】:

我有两个文件,一个在 1.js 之间,第二个是 import.js。 在 between1.js 中,我得到了几个函数,其中一个函数我移到了 import.js。我得到的练习是使用模块和需要函数。我仍然有如何在 between1.js 中使用 require 的问题。见下面的代码

Between1.js 代码: https://codeshare.io/alxMvY

import.js: https://codeshare.io/244yg4

我是 js 和 node 的初学者。我在 import.js 中得到了函数,代码底部是 module.exports,这意味着导出模块,在第二个文件 between1.js 中,我尝试先导入函数: 让 utils = require("./import.js"); 在底部试图获得该功能,但问题是我真的不知道如何。我正在尝试像我之前在代码中粘贴一样,但它不起作用

我想要的是有人帮我解释一下 require 和 module 的工作原理。

import.js 代码:

    /**
 * Module.
 *
 * Matteus Urbaniak
 */
 "use strict";


function teacherAsTable(res) {
     let str;

     str = "+-----------+---------------------+-----------+----------+--------------+\n";
     str += "| Akronym   | Namn                | Avdelning |   Lön    | Kompetens    |\n";
     str += "|-----------|---------------------|-----------|----------|--------------|\n";
     for (const row of res) {
         str += "| ";
         str += row.akronym.padEnd(10);
         str += "| ";
         str += (row.fornamn + " " + row.efternamn).padEnd(20);
         str += "| ";
         str += row.avdelning.padEnd(10);
         str += "| ";
         str += row.lon.toString().padStart(9);
         str += "| ";
         str += row.kompetens.toString().padEnd(12);
         str += " |\n";
     }
     str += "+-----------+---------------------+-----------+----------+--------------|\n";

     return str;
 }

module.exports = {
    "teacherAsTable": teacherAsTable
};

在1.js之间

    /**
Arbete gjordes av Matteus Urbaniak
*/


"use strict";


/**
Jag använder programmeringsstilen med async/await
för att hantera asynkrona anrop. För det syftet väljer
jag paketet promise-mysql som är en wrapper kring paketet mysql.
*/

const mysql = require("promise-mysql");

// Inloggningsdetaljer till databasen.
const config = require("./config.json");

let utils = require("./import.js");

// Läsa från komand linje

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

/**
Main function
*/

(async function() {
    const db = await mysql.createConnection(config);
    let str;

    rl.question("What do you want search for? (min); ", async (min) => {
        rl.question("What do you want search for? (max); ", async (max) => {
            str = await searchBetween(db, min, max);
            console.info(str);
            rl.close();
            db.end();
        });
    });
})();



// Ge en rapport med larare details och formaterad text.

async function searchBetween(db, min, max) {
    let sql;
    let res;
    let str;
    let minimum = `${min}`;
    let maximum = `${max}`;

    console.info(`Searching for: ${minimum} - ${maximum}`);
    sql = `
        SELECT
            akronym,
            fornamn,
            efternamn,
            avdelning,
            lon,
            kompetens
        FROM larare
        WHERE
            (kompetens BETWEEN ? AND ?)
            OR
            lon BETWEEN ? AND ?
        ORDER BY akronym;
    `;
    res = await db.query(sql, [minimum, maximum, minimum, maximum]);
    str = teacherAsTable(res);
    return str;
}

// HERE SHOULD BE teacherAsTable 
let res;

res = utils.teacherAsTable();
console.log(res);

【问题讨论】:

  • @cale_b 抱歉。帖子已更新
  • teacherAsTable 需要一个可迭代的参数,并且错误消息是这样说的。您只需使用res = utils.teacherAsTable([]);

标签: javascript mysql node.js


【解决方案1】:

尝试在 Between1.js 中执行此操作:

module.exports = {teacherAsTable};

【讨论】:

  • 为什么?这是做什么的?具体应该在文件中的哪个位置添加?
猜你喜欢
  • 2019-04-05
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 2018-11-25
  • 2017-10-11
  • 2016-03-15
  • 2022-01-17
  • 1970-01-01
相关资源
最近更新 更多