【问题标题】:What require does in Node.jsNode.js 中的 require 是什么
【发布时间】:2020-10-10 18:08:09
【问题描述】:

我想知道一个使用 npm 模块的导出函数如何在另一个不需要这些 npm 包的文件中运行?

第一个文件(将被导出):

    const jwt = require("jsonwebtoken")
    var generateToken = function (){var token = jwt.sign({name:"medo"},"sas");return token}

    module.exports = generateToken

第二个文件(需要该函数):

    const token = require("./pack.js")
    console.log(token());

如果不需要jsonwebtoken模块,第二个文件中的函数如何成功运行?

【问题讨论】:

    标签: node.js node-modules


    【解决方案1】:

    这是一个依赖树。您的代码已加载 ./pack.js。在加载该文件的过程中,它随后加载了模块jsonwebtoken./pack.js,然后导出它自己的函数generateToken(),然后你的代码就可以调用generateToken()

    generateToken() 执行时,它使用之前导入的jwt 对象来完成它的工作。

    从您的文件中成功调用的唯一内容是从./pack.js 导出的generateToken() 函数。然后,gererateToken() 函数在它自己的模块范围内执行,它可以访问它所需的东西,例如 jwt


    它类似于操作系统调用中一直发生的事情。您调用操作系统函数来播放音频文件。该操作系统函数然后加载适当的声音驱动程序(如果尚未加载)和适当的编解码器以解压缩声音文件的类型。您的代码不必加载这些东西。您刚刚调用了 OS 函数来播放声音文件。它是在操作系统中执行该功能的,它加载了所有正确的部分以实际执行该功能。在您的 nodejs 示例中也是如此。

    【讨论】:

    • 你的意思是当我在第二个文件中调用 token() 时,它首先在 pack.js 文件中执行然后返回结果?
    猜你喜欢
    • 2014-11-20
    • 2016-03-16
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 2012-10-01
    • 2015-12-13
    • 1970-01-01
    • 2012-03-17
    相关资源
    最近更新 更多