jaredpalmer / tsdx

Zero-config CLI for TypeScript package development
https://tsdx.io
MIT License
11.29k stars 507 forks source link

Failure to run test #1177

Open ekoulemaneng opened 1 year ago

ekoulemaneng commented 1 year ago

Current Behavior

When I run yarn test, I get this bug:

` FAIL test/blah.test.ts ● Test suite failed to run

TypeError: The "path" argument must be of type string. Received undefined

  at node_modules/tsdx/node_modules/ts-jest/dist/compiler/compiler-utils.js:19:27
      at Array.map (<anonymous>)
  at Object.cacheResolvedModules (node_modules/tsdx/node_modules/ts-jest/dist/compiler/compiler-utils.js:18:14)
  at compileFn (node_modules/tsdx/node_modules/ts-jest/dist/compiler/language-service.js:127:38)
  at Object.compile (node_modules/tsdx/node_modules/ts-jest/dist/compiler/instance.js:52:21)
  at TsJestTransformer.process (node_modules/tsdx/node_modules/ts-jest/dist/ts-jest-transformer.js:85:41)
  at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:481:35)`

Expected behavior

And yet, I have only tested the function of the basic boilerplate of TSDX.

Suggested solution(s)

Additional context

Your environment

System:
    OS: Linux 5.19 Ubuntu 22.04.2 LTS 22.04.2 LTS (Jammy Jellyfish)
    CPU: (8) x64 Intel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz
    Memory: 1.49 GB / 7.54 GB
    Container: Yes
    Shell: 5.1.16 - /bin/bash
  Binaries:
    Node: 18.12.1 - ~/.nvm/versions/node/v18.12.1/bin/node
    Yarn: 3.3.1 - ~/.nvm/versions/node/v18.12.1/bin/yarn
    npm: 8.19.2 - ~/.nvm/versions/node/v18.12.1/bin/npm
    Watchman: 20221225.010033.0 - /usr/local/bin/watchman
  Browsers:
    Firefox: 111.0.1
brietsparks commented 1 year ago

I don't know the direct fix, but as a workaround you could use dts-cli which is a maintained fork of tsdx, or try downgrading to TypeScript v4

amerllica commented 1 year ago

I have got the same issue, and really I don't like to downgrade anything. still I'm seeking for a solution.

@jaredpalmer, Could you take a look please?

yangwawa0323 commented 1 year ago

I got same issue, and I just use command npx tsdx create mylib2 initial the project. the following is the error message.

D:\Projects\mylib2  (mylib2@0.1.0)
λ yarn test --coverage
 FAIL  test/blah.test.tsx
  ● Test suite failed to run

    TypeError: The "path" argument must be of type string. Received undefined

      at node_modules/tsdx/node_modules/ts-jest/dist/compiler/compiler-utils.js:19:27
          at Array.map (<anonymous>)
      at Object.cacheResolvedModules (node_modules/tsdx/node_modules/ts-jest/dist/compiler/compiler-utils.js:18:14)
      at compileFn (node_modules/tsdx/node_modules/ts-jest/dist/compiler/language-service.js:127:38)
      at Object.compile (node_modules/tsdx/node_modules/ts-jest/dist/compiler/instance.js:52:21)
      at TsJestTransformer.process (node_modules/tsdx/node_modules/ts-jest/dist/ts-jest-transformer.js:85:41)
      at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:481:35)

-----------|---------|----------|---------|---------|-------------------
File       | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
-----------|---------|----------|---------|---------|-------------------
All files  |       0 |      100 |       0 |       0 |
 index.tsx |       0 |      100 |       0 |       0 | 1-5
-----------|---------|----------|---------|---------|-------------------
Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        9.645s
Ran all test suites.

D:\Projects\mylib2  (mylib2@0.1.0)
λ yarn -v
3.4.1
Connor-8 commented 1 year ago

So I wasn't able to directly fix the issue but my workaround for not having to downgrade my typescript version was to install ts-jest and jest directly using

yarn add --dev jest
yarn add --dev ts-jest
yarn add --dev @jest/globals

so now my devDependencies look like this

  "devDependencies": {    
    "@jest/globals": "^29.5.0",
    "@size-limit/preset-small-lib": "^8.2.4",
    "@types/jest": "^29.5.1",
    "husky": "^8.0.3",
    "jest": "^29.5.0",
    "size-limit": "^8.2.4",
    "ts-jest": "^29.1.0",
    "tsdx": "^0.14.1",
    "tslib": "^2.5.0",
    "typescript": "^5.0.4"
  },

then I changed my "test" script to run "jest" instead of "tsdx test"

  "scripts": {
    "start": "tsdx watch",
    "build": "tsdx build",
    "test": "jest",
    "lint": "tsdx lint",
    "prepare": "tsdx build",
    "size": "size-limit",
    "analyze": "size-limit --why"
  },

my test file looks like this now

import {describe, expect, test} from '@jest/globals';
import {sum} from './sum';

describe('sum module', () => {
  test('adds 1 + 2 to equal 3', () => {
    expect(sum(1, 2)).toBe(3);
  });
});

I'm pretty sure the "@jest/globals" isn't actually needed because of having "@types/jest" installed but I don't feel like messing with this any further.

edit:

I forgot to mention I also ran yarn ts-jest config:init

ApayRus commented 1 year ago

@Connor-8 Hi. Thank you. Where did you run yarn ts-jest config:init?

Connor-8 commented 1 year ago

@Connor-8 Hi. Thank you. Where did you run yarn ts-jest config:init?

If I remember correctly (emphasis on the "if I remember") it was in the root my project in order to generate the jest.config.js so if you already have one it might not be necessary.

ApayRus commented 1 year ago

@Connor-8 thank you :) I gave up and downgraded typescript to v4 :smile: