使用JSMin压缩JSDOM时发生JavaScript压缩错误
我的项目是用TypeScript为前端开发的使用JSMin压缩JSDOM时发生JavaScript压缩错误,javascript,mocha.js,hammer.js,jsdom,jsmin,Javascript,Mocha.js,Hammer.js,Jsdom,Jsmin,我的项目是用TypeScript为前端开发的 摩卡咖啡-用于单元测试 JSDOM-用于DOM模拟 Hammer.js-用于触摸用户体验 Grunt、JSMin等 项目文件结构如下所示: index.ts mymodule.ts mymodule_test.ts 由于Hammer.js在内部使用全局窗口和文档对象,因此我在import语句之前添加了一些复杂的代码,仅用于测试目的 mymodule.ts 1:从“jsdom”导入*作为jsdom; 2:if(窗口类型===‘未定义’){ 3:让
- 摩卡咖啡-用于单元测试
- JSDOM-用于DOM模拟
- Hammer.js-用于触摸用户体验
- Grunt、JSMin等
index.ts
mymodule.ts
mymodule_test.ts
由于Hammer.js在内部使用全局窗口
和文档
对象,因此我在import语句之前添加了一些复杂的代码,仅用于测试目的
mymodule.ts
1:从“jsdom”导入*作为jsdom;
2:if(窗口类型===‘未定义’){
3:让testDom:HTMLDocument=jsdom.jsdom(“”,未定义);
4:(全局).window=testDom.defaultView;
5:(全局).document=testDom;
6: }
7:从“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:
我搜索了一会儿,发现了一些关于这样一个错误的问题。
为了避免这个错误,我应该修改JSDOM的内部代码或删除mymodule.ts
中的1-6行。但这两种价格都无法承受
- 如果在
中删除1-6行,则无法运行测试mymodule.ts
- 修改JSDOM或JSMin的原始代码似乎不是正确的方法
我如何解决这个问题?我应该使用另一个JavaScript缩微器吗?或者不应该测试包含Hammer.js导入语句的
mymodule.js
?我临时用简洁的语言解决了这个问题。正如我的一位朋友提议的那样,我尝试了UglifyJS3、JSMin2和Terser。只有泰瑟能够压缩JSDOM,但更详细的解释或其他方法将被接受为有效的答案。请让我更多地了解这个问题。非常感谢。