从Node.JS中的外部.js文件调用方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Node.JS中的外部.js文件调用方法相关的知识,希望对你有一定的参考价值。

我创建了一个连接到Oracle数据库的文件db.js

process.env.ORA_SDTZ = 'UTC';
var oracledb = require('oracledb');
exports.saveInDB = async function(data) {
  let connection;

  try {
    let sql, binds, options, result;
    binds = [];

    connection = await oracledb.getConnection({
      user: "user",
      password: "pass",
      connectString: "localhost/dbname"
    });

    var start = new Date();

    for (var i = 1; i <= 100; i++) {
      sql = `INSERT INTO mytab VALUES (:1, :2, :3)`;
      binds = [
        [i, "Inserted row number => " + i + " =>" + data, 0]
      ];
      options = {
        autoCommit: true,
        bindDefs: [
          { type: oracledb.NUMBER },
          { type: oracledb.STRING, maxSize: 999 },
          { type: oracledb.NUMBER }
        ]
      };
      result = await connection.executeMany(sql, binds, options);

      console.log("Inserted row number => ", i);
    }

    var end = new Date() - start;
    console.info('Execution time: %dms', end);
  } catch (err) {
    console.error(err);
  } finally {
    if (connection) {
      try {
        await connection.close();
      } catch (err) {
        console.error(err);
      }
    }
  }
}

当我想打电话给var db = require('./db.js'); db.saveInDb(data);时,发生了这个错误:TypeError: db.saveInDb is not a function。我尝试其他格式来定义像async function saveInDb(data)这样的方法,但结果不会改变。我该如何解决这个错误?我搜索这个但无法解决这个问题。谢谢。

答案

试试:

export const saveInDB = async function(data) {
            let connection;
            try {
    // my codes....
                }
                var end = new Date() - start;
                console.info('Execution time: %dms', end);
            } catch (err) {
                console.error(err);
            } finally {
                if (connection) {
                    try {
                        await connection.close();
                    } catch (err) {
                        console.error(err);
                    }
                }
            }
        }
另一答案

    process.env.ORA_SDTZ = 'UTC';
    var oracledb = require('oracledb');
    const saveInDB = async function(data) {
        let connection;
        try {
// my codes....
            }
            var end = new Date() - start;
            console.info('Execution time: %dms', end);
        } catch (err) {
            console.error(err);
        } finally {
            if (connection) {
                try {
                    await connection.close();
                } catch (err) {
                    console.error(err);
                }
            }
        }
    }
    
    export { saveInDB }
另一答案

你的方法的问题是async function(){返回一个Promise,你试图在var db = require('./db.js'); db.saveInDb(data);中调用它,因此错误。适当地执行promise(取决于db.js文件中的内容),这可以解决。

以上是关于从Node.JS中的外部.js文件调用方法的主要内容,如果未能解决你的问题,请参考以下文章

如何从 node.js 调用外部脚本/程序

Node.js 和 JSON:从外部网站 api 检索信息

如何从Node.js中的URL加载外部js脚本

Node.js模块定义总结

Node.js JavaScript 片段中的跳过代码

从 Node.js 调用 C++ 库(Node addons / node-ffi)