【问题标题】:Uncaught TypeError: (0 , _module) is not a function未捕获的 TypeError: (0 , _module) 不是函数
【发布时间】:2019-09-15 12:51:57
【问题描述】:

我正在使用 parcel,并且正在尝试使用 ES6 导入和导出语法。 Parcel 似乎在地下运行 babel,我对它很陌生。当 openimn 将 index.html 放在“dist”文件夹中时,它无法很好地呈现并在控制台中显示此错误:“Uncaught TypeError: (0, _module.importedHi) is not a function”

这是导出 JS 文件中的代码:

export const importedHi = document.write("Hello world")

这是 main.js 的代码:

import {importedHi} from "./module1";

importedHi()

这是我在 index.html 中使用的脚本

<script src="js/main.js"></script>

我必须进行哪些配置才能使其正常工作?

【问题讨论】:

    标签: javascript ecmascript-6 babeljs es6-modules parceljs


    【解决方案1】:

    document.write 返回undefined,所以importedHiundefinedimportedHi() 抛出错误。您可能想导出一个调用document.write函数,例如:

    export const importedHi = () => document.write("Hello world");
    

    不过,如果您可以使用模块和捆绑程序,您可能应该使用更现代的方法来操作 DOM,例如 createElement / appendChild 等,也许是类似

    export const importedHi = () => {
      document.body.appendChild(document.createTextNode('Hello world'));
    };
    

    【讨论】:

    • You probably wanted to export a function that calls document.write 公平地说,没有人想导出调用document.write 的函数:p
    • 嗯,学习 porpuses 是有效的,你不觉得吗?或者你想让我建立新的 facebook 应用来学习?
    • 如果你愿意,可以使用document.write,这不是一个好主意 - 许多 linter 警告它,它可以是 eval 的一种形式,它如果文档已经加载,将不直观地替换当前文档。学习它 IMO 是没有用的 - 它不应该被使用,使用其他 DOM 方法,比如我提到的那些或insertAdjacentHTML。 (同样地,在很多情况下您可以使用eval,但它很丑陋并且可能不安全,所以如果可以避免的话,一般不应该这样做)
    • 我按照@CertainPerformance 的建议修复了它,但是,我仍然遇到同样的错误。我在实现导入/导出时遇到了严重问题:(
    • @JulioRodríguez 我无法重现,它似乎按我的意愿工作codesandbox.io/s/72v4pjk07q
    猜你喜欢
    • 2018-11-12
    • 2022-01-18
    • 2018-07-14
    • 1970-01-01
    • 2022-07-09
    • 2021-05-19
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多