TypeError: "exports" 是只读的 => 导出模块时调用另一个方法的方法

Posted

技术标签:

【中文标题】TypeError: "exports" 是只读的 => 导出模块时调用另一个方法的方法【英文标题】:TypeError: "exports" is read-only => When exporting a module with method calling another method 【发布时间】:2019-12-16 22:01:02 【问题描述】:

我是 webpack 和这个模块捆绑器的新手,我目前只是在试验什么是可能的,什么是不可能的。

在这里,我正在尝试以下操作:

//appECommerce.js
import eCommerceLogic from './lib/eCommerceLogic.js'

//eCommerceLogic.js
import name from './eCommerceJSExportTests.js';

module.exports = 
  productnamesOnclick:  function()
    $("#AJAXproductnames").on("click",function()
       getProductnameElements()
    )
  ,
  productNamesGetter: function()
    async function getProductnameElements()
      let productNameElements = document.getElementsByClassName('customProductCardName')
      console.log("result is ", productNameElements)
      let test = await name.commonAJAXCall()
      console.log(test)
    
  


//eCommerceJSExportTests.js
module.exports = 
  commonAJAXCall:  function() 
        //return "helloExport"
        return $.get('https://jsonplaceholder.typicode.com/todos/1', 

            ).then((response) => 
              response = JSON.stringify(response)
              console.log(response)
              console.log("AJAX happened")
              return response
        )
  

所以基本上,我只想知道为什么会出现这个错误(见标题)^^ 此外,我还想知道三个具体的事情:

1) 是否可以让模块 B 从模块 C 导入然后导出到模块 A,其中模块 B 导入的内容最终由其“自己的”代码和从模块 C 导入的代码组成,因为模块 B使用从那里的模块 C 导入的属性和方法?

2) 在如上所示导出的代码中,实际上是否可以让方法 A 包含对方法 B 的调用?

3) 将事件侦听器附加到 DOM 的代码甚至可以导出吗?

【问题讨论】:

import 用于 ES6 模块,module.exports 用于 CommonJS 模块。你不应该混合两者。对于 ES6 模块,使用 export 语句进行导出,对于 CommonJS 模块,使用 require 进行导入 @Patrick Hund 谢谢,你能给我指出一个 ES6 模块导出的教程(初学者)吗? :) 我在这里和那里看到过语法,但我不知道它是如何工作的^^ 在我看来,MDN 是所有 javascript 的最佳资源:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 【参考方案1】:

试试这个:

export  toBeExported as toBeExported ;

【讨论】:

以上是关于TypeError: "exports" 是只读的 => 导出模块时调用另一个方法的方法的主要内容,如果未能解决你的问题,请参考以下文章

“typeError:无法读取未定义的属性‘用户名’。”

模块构建失败:TypeError:无法读取 Object.module.exports 处未定义的属性“上下文”

TypeError:export_users_xls()缺少1个必需的位置参数:'request'

2.在使用"node-xlsx" 模块时报" TypeError: Object function Object() { [native code] } has no m

测试无法运行测试用例退出 TypeError: Jest: a transform must export a `process` function

类型错误:“秘密”是必需的