我有一个包含此代码的JS文件:
.emacs
我想将它导入JSX文件,我尝试这样做,但我没有工作:
module.exports = function loadMyFun() {
function activateSite($currentItem) {
...
}
...
}
我收到此错误:
未捕获的TypeError:_MyNav.default.activateSite不是函数
知道如何解决这个问题吗?
答案 0 :(得分:4)
activateSite
是一个本地范围到loadMyFun
函数的变量。
在loadMyFun
范围之外无法使用。
它不是loadMyFun
函数对象的属性。
如果不重写模块,则无法访问它。
e.g。
module.exports = function loadMyFun() {
};
module.exports.activeSite = function activateSite($currentItem) {
};
答案 1 :(得分:3)
如果您提供的代码实际上是您尝试加载的模块,那么该模块存在一些问题。
您正在导出构造函数loadMyFun
,导入后不会调用/实例化。
如果要实例化像const myNav = new MyNav()
这样的构造函数,那么你将拥有导出的构造函数的实例。
要使activateSite
功能正常运行,您必须将其分配给实例本身并将其移出loadMyFunc
的本地范围,方法如下:this.activateSite = function(){...}
< / p>
如果您不需要围绕activateSite
函数的任何信息,我建议您使用函数导出对象而不是loadMyFun
方法。
//myModule.js
module.exports = {
activateSite: function(){ ... }
}
//otherFile.js
import { activateSite } from './myModule.js' // With destructuring
activateSite()
import myModule from './myModule.js' // Without destructuring
myModule.activateSite()