【问题标题】:Unexpected token export jest angular意外的令牌导出笑话角度
【发布时间】:2019-01-14 19:03:09
【问题描述】:

我阅读了很多关于这个问题的帖子,但我不明白如何解决它。我尝试了很多解决方案,但仍然出现错误。

 Details:

    /home/work/project/node_modules/ngx-cookie-service/index.js:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){export * from './cookie-service/cookie.service';
                                                                                             ^^^^^^

    SyntaxError: Unexpected token export

      15 |         this.sessionStorage = sessionStorage;
      16 |         this.localStorage = localStorageService;
    > 17 |         this.cookieService = cookieService;
         |                              ^
      18 |     }
      19 |
      20 |     public set(key, value, useSessionStorage = true) {

      at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:403:17)
      at Object.<anonymous> (src/myApp/coreModule/services/storageLayer.service.ts:17:30)
      at Object.<anonymous> (src/myApp/itemModule/components/category.component.ts:30:32)

所以我将它添加到我的 package.json 中:

  "jest": {
    "transformIgnorePatterns": [
      "node_modules/(?!ngx-cookie-service)"
    ]
  }

问题仍然存在。有人可以帮忙吗?我应该使用“moduleNameMapper”来模拟 ngx-cookie-service 吗?

非常感谢!

【问题讨论】:

    标签: angular jestjs


    【解决方案1】:

    我刚刚找到了解决这个问题的方法。

    1. 在 node_modules 所在的根文件夹中添加一个文件夹 __mocks__

    2. __mocks__文件夹中添加ngx-cookie-service.js文件并放置以下代码:

    class MockCookieService {
      constructor() {
        this._cookieReg = {};
      }
      check(name) {
        return this._cookieReg[name] ? true : false;
      }
      get(name) {
        return this._cookieReg[name];
      }
      getAll() {
        return this._cookieReg;
      }
      set(
        name,
        value,
        expires,
        path,
        domain,
        secure,
        sameSite
      ) {
        this._cookieReg[name] = name + '=' + value;
      }
      delete(name, path, domain) {
        delete this._cookieReg[name];
      }
      deleteAll(path, domain) {
        this._cookieReg = {};
      }
    }
    
    module.exports = {
      CookieService: MockCookieService
    };
    
    1. 现在在实际的组件规格文件中,放置以下代码:
    import { CookieService } from 'ngx-cookie-service';
    jest.genMockFromModule('ngx-cookie-service');
    TestBed.configureTestingModule({
      declarations: [Your-Component],
      providers: [CookieService]
    })
    
    1. 现在运行jest,测试将运行良好。

    【讨论】:

      【解决方案2】:

      我加了

      "transformIgnorePatterns": [
        "node_modules/(?!@ngrx|ngx-cookie-service|ng-dynamic)"
      ],
      

      到 package.json 并解决了问题。

      当我从正则表达式中删除 ng-dynamic 时,测试会以相同的执行失败。我不知道为什么,但他们不应该,imo,因为我没有那个模块。

      【讨论】:

        【解决方案3】:

        我在jest.config.js 文件中使用了相同的方法transformIgnorePatterns: ['/node_modules/?!@angular'] 并且工作正常。

        【讨论】:

        • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
        猜你喜欢
        • 2021-03-08
        • 1970-01-01
        • 1970-01-01
        • 2018-04-12
        • 2019-03-10
        • 1970-01-01
        • 2018-03-15
        • 2017-09-13
        • 1970-01-01
        相关资源
        最近更新 更多