【问题标题】:How do you find out which functions are exported by a node/npm package?如何找出 node/npm 包导出了哪些函数?
【发布时间】:2020-09-02 14:02:09
【问题描述】:

按照我的earlier questionimport 上的Mozilla documentation,我现在明白我必须执行以下操作才能在模块中使用该功能:

  1. import * as name from "module";
  2. import {functionName} from "module";

从使用 CommonJS 开始,我从没想过哪些函数是由包导出的,因为我只是习惯了 require 他们喜欢:

const vueServerRenderer = require('vue-server-renderer') // get the module
vueServerRenderer.createRenderer() // use a function in that module

有人如何知道expressvueServerRenderer 等模块正在导出哪些函数,所以我知道如何使用正确的import 语句,例如:

import express from 'express' 而不是import * as express from 'express'?

【问题讨论】:

    标签: javascript node.js npm ecmascript-6 node-modules


    【解决方案1】:

    TLDR:default 导出。

    假设一个名为“模块”的特定库具有以下代码

    function functionName() {
      // function body
    }
    
    export default functionName;
    

    现在,在你的代码中,如果你把

    import blah from "module";
    

    然后blah 将指向functionName

    【讨论】:

    • 好的,但是你怎么知道module 甚至还有export default functionName?有些模块根本没有导出默认值,只导出特定的功能。
    • 那么你不能像这样只使用import 语句。在这种情况下,您应该使用以下语法。 import {funcitonName} from 'module';
    • 另一个答案是我正在寻找的。告诉 什么 在导出中可用的唯一方法是查看模块源代码或使用带有智能感知的 IDE
    【解决方案2】:

    您需要阅读模块源代码。

    每个export 语句都会导出一些内容。可以是函数、数组、字符串、类等。

    每个没有defaultexport 语句都需要在导入时进行解构:

    import { NonDefaultThing1, NonDefaultThing2 } from 'somewhere'
    

    必须直接导入带有defaultexport 语句而不带{}

    import DefaultThing from 'somewhere'
    

    一些模块有默认导出但也有非默认导出。您可以选择要导入的内容:

    import DefaultThing, { NonDefaultThing7 } from 'somewhere'
    

    如果您使用可以解析 javascript 的 IDE,例如 Microsoft Visual Studio Code,您可以获得 import 语句的自动完成/智能感知。甚至还有自动导入的插件:只需使用模块中的类或函数或其他东西,它就会自动在文件顶部添加所需的导入语句。

    【讨论】:

    • 谢谢你看看 IntelliJ Idea 是否有这样的功能。我认为是的
    • 为什么import * as express from 'express' 不起作用但import express from 'express' 起作用?如果我先做import *... 然后app = express() 我得到一个错误,说 express 不是一个函数。为什么?我以为 * 会导入所有内容?
    猜你喜欢
    • 2011-08-20
    • 2020-11-15
    • 2020-04-24
    • 2013-10-22
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    相关资源
    最近更新 更多