此函数使它不具有功能是什么

问题描述 投票:-2回答:2

这是一个菜鸟问题。当我运行app.js时,出现错误createTunnelToMongoDB is not a function。我正在尝试使用tunnel-ssh访问我的数据库。有人可以告诉我为什么我不能这样做吗?

路径:app.js

    const createTunnelToMongoDB = require("./createTunnelToMongoDB.js");

    (async function app() {
      try {
        // create a tunnel
        const tunnel = await createTunnelToMongoDB();
      } catch (e) {
        console.log("our error", e);
      }
    })();

路径:createTunnelToMongoDB.js

const tunnel = require("tunnel-ssh");
const fs = require("fs");

var config = {
  username: "root",
  privateKey: require("fs").readFileSync(path.join(__dirname, "../../id_rsa")),
  ...etc
};
var tnl = tunnel(config, function(error, tnl) {
  if (error) {
    console.log(error);
  }
  return tnl;
});

module.exports = tnl;
javascript node.js mongodb ecmascript-6 ssh-tunnel
2个回答
0
投票

[createTunnelToMongoDB.js导出对象,即对tunnel的调用结果:

var tnl = tunnel(config, function(error, tnl) {
  // ...
});

module.exports = tnl;

它不会导出函数,因此当您尝试调用它时,Node会正确地告诉您它不是函数。


0
投票

[似乎createTunnelToMongoDB.js未导入到app.js

尝试将app.js编辑为:

import { tnl as createTunnelToMongoDB } from "./createTunnelToMongoDB.js";

(async function app() {
  try {
    // create a tunnel
    const tunnel = await createTunnelToMongoDB();
  } catch (e) {
    console.log("our error", e);
  }
})();
© www.soinside.com 2019 - 2024. All rights reserved.