javascript - 导入自动调用函数将 this 绑定(bind)到 window 对象

标签 javascript node.js ecmascript-6 babeljs jestjs

在 Jest 测试中,我需要导入一个声明一些全局函数的 JavaScript 模块。这个 javascript 模块是从 django (ex jsi18n) 自动生成的,它是一个自动调用函数

(function(globals) {
    var django = globals.django || (globals.django = {});
    ...
}(this));

这对于在 React 组件内使用翻译很有帮助。例如,使用全局定义的函数 gettext()

在我们的 .jsx 文件中包含翻译字符串
<p>{ gettext('got it') }</p>

我尝试使用标准形式导入模块

import './djangojs';

但是开 Jest 报告错误

TypeError: Cannot read property 'django' of undefined

因为this它是未定义的(严格模式)。因此,我尝试手动编辑模块并在末尾添加 }(this || window)); 并正常工作。 但该模块每次都是自动生成的。那么如何将 this 绑定(bind)到 window 以使用全局对象而无需手动编辑文件呢?

最佳答案

解决方案:

我直接使用 setupFiles 导入了 django javascript 模块正如@dfsq所说

"setupFiles": [
    "<rootDir>/path/to/jsi18n/djangojs.js",
    "<rootDir>/path/to/js/reverse.js"
],

关于javascript - 导入自动调用函数将 this 绑定(bind)到 window 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49666853/

相关文章:

javascript - 异步函数的js生成器

javascript - 如何在 map 迭代中获取特定对象键

javascript - 在第一次页面加载时运行一个函数,而不是在 javascript 中刷新页面

javascript - 带有复选框和 anchor 标记的 jquery

node.js - npm 在 Windows 上安装 EACCES 错误

node.js - Node.js更新文档失败时,最好抛出异常或返回信息吗?

node.js - 多用户应用程序的 Mongoose 模式

javascript - 这个 javascript es6 胖箭头函数的 db 参数的值或用法是什么?

javascript - Coffeescript 在函数中包装文件

javascript - 为什么 Promise 中的resolve()之后没有抛出错误?