首页 > 解决方案 > 使用 JSMin 压缩 JSDOM 时出现 JavaScript 压缩错误

问题描述

我的项目是使用 TypeScript 为前端开发的。

项目文件结构是这样的:

index.ts
mymodule.ts
mymodule_test.ts

由于 Hammer.js 在内部使用全局windowdocument对象,我在 import 语句之前添加了一些棘手的代码,仅用于测试目的。

mymodule.ts

1: import * as jsdom from 'jsdom';
2: if (typeof window === 'undefined') {
3:     let testDom: HTMLDocument = jsdom.jsdom('', undefined);
4:     (<any> global).window = testDom.defaultView;
5:     (<any> global).document = testDom;
6: }
7: import * as Hammer from 'hammerjs';
...

现在测试运行成功。但是构建失败并吐出以下错误:

Running "shell:minify" (shell) task

/home/yunbo/Workspace/jobkey/frontend/node_modules/jsmin/jsmin.js:231
            throw 'Error: unterminated string literal: ' + a;
            ^
Error: unterminated string literal: 

我搜索了一段时间,发现了一些关于此类错误的 Q&A。为避免该错误,我应该修改 JSDOM 的内部代码或删除mymodule.ts. 但两者都买不起。

我该如何解决这个问题?我应该使用另一个 JavaScript 缩小器吗?或者不应该测试mymodule.js包含 Hammer.js 导入语句?

标签: javascriptmocha.jshammer.jsjsdomjsmin

解决方案


推荐阅读