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:无法读取 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