anycable-client icon indicating copy to clipboard operation
anycable-client copied to clipboard

Jest

Open calderon opened this issue 1 year ago • 3 comments

Hi! I have included @anycable/web (lastest version) and running Jest I am getting:

    Details:

    /Users/dani/code/project/node_modules/@anycable/web/index.js:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){import {
                                                                                      ^^^^^^

    SyntaxError: Cannot use import statement outside a module

       7 |   useState,
       8 | } from 'react';
    >  9 | import {
         | ^
      10 |   Cable,
      11 |   createCable,
      12 | } from '@anycable/web';

Is there anything to add in jest config or such? What am I missing?

calderon avatar Apr 29 '24 11:04 calderon

I suggest trying --experimental-vm-modules to the jest command (like we do here). See also: https://jestjs.io/docs/ecmascript-modules

palkan avatar Apr 29 '24 22:04 palkan

@palkan I tried it:

NODE_OPTIONS=--experimental-vm-modules jest --coverage

The error is different but it is still in there:

    Must use import to load ES Module: /Users/dani/code/project/node_modules/@anycable/web/index.js

       7 |   useState
       8 | } from 'react';
    >  9 | import {
         | ^
      10 |   Cable,
      11 |   createCable,
      12 | } from '@anycable/web';

Using it in a project:

  • React 18.2 with TS
  • Node 20.4.0
  • Jest 29.7.0 with ts-jest

For now I am disabling it in my test environment as a desperate measure

jest.mock('@anycable/web', () => ({}));

calderon avatar Apr 30 '24 08:04 calderon