【问题标题】:How to import and use function in another function in JS如何在JS中的另一个函数中导​​入和使用函数
【发布时间】:2019-10-04 12:11:08
【问题描述】:

我有一个主文件“index.js”,我想在另一个 js 文件中导入和使用其中的函数。

我尝试使用 require 导入文件,但没有成功。有人可以帮助我提供建议吗?

Index.js,

   function dcLib() {
       function test() {
          console.log('Hi');
       }
       return {
          test:test
       }
  };
   export default dcLib;

column.js,

   const dcLib = require('../index');
   dcLib.test()    

上面的代码给出了错误

      TypeError: dcLib.test is not a function

【问题讨论】:

  • function dcLib { - 这是无效的语法 - 你需要 function dcLib() { 然后当你做 dcLib.test() 你仍然需要执行函数 - dcLib().test()
  • Function dcLib 是一个函数,当被调用时返回一个对象,该对象具有一个函数的属性。你永远不会调用dcLib,它本身没有test 属性。
  • @VLAZ 抱歉打错了,编辑了。我试过像你说的那样仍然显示错误,因为 dcLib().test() --->dcLib 不是函数
  • deceze 应该是什么解决方案
  • @pleasent 这在很大程度上取决于您使用的转译器。默认导出会根据许多情况改变其导入行为。在你的情况下,你可能应该做dcLib.default().test()。如果你想要那种要求,你应该导出一个未命名的函数。你可以在这里玩,如果你想:stackblitz.com/edit/js-3wwz8a

标签: javascript function ecmascript-6 mean


【解决方案1】:

要么做:

const dcLib = require('../index');
dcLib.default().test();

...或者,如果您愿意,也可以这样做:

const dcLib = require('../index').default;
dcLib().test();

或者,以更简单的 (ES6) 方式,只需:

import dcLib from './test';
dcLib().test();

如果您使用 require 而不是 import,ES6 导入和导出的行为会有所不同。此外,根据环境以及最终使用的转译器(如果有的话),情况会发生一些变化。阅读更多关于here, where Felix Kling made a pretty exhaustive overview about such argument

正如评论中提到的,我在 stackblitz 上做了一个工作示例,请随意使用这两种情况:https://stackblitz.com/edit/js-3wwz8a?file=index.js

【讨论】:

    猜你喜欢
    • 2019-03-01
    • 2017-06-25
    • 2022-01-05
    • 2015-11-21
    • 2023-03-12
    • 2014-03-24
    • 2018-06-06
    • 2018-11-24
    相关资源
    最近更新 更多