Błąd "Cannot find module '../config.json'. Consider using '--resolveJsonModule' to import module with '.json' extension"

0

Mam projekt w TypeScripcie, który używa frameworka Mocha do testów jednostkowych. Uruchamiam testy w ten sposób:

npm run test

gdzie konfiguracja polecenia test wygląda tak w pliku package.json:

{
    ...
    "scripts": {
        ...
        "test": "mocha"
    },
    ...
}

Po uruchomieniu pokazuje mi się taki błąd w konsoli:

TSError: ⨯ Unable to compile TypeScript:
app/src/back-end2/board/board.ts:9:32 - error TS2732: Cannot find module '../config.json'. Consider using '--resolveJsonModule' to import module with '.json' extension

9 import * as configuration from "../config.json";

Uważam, że nie powinien się pokazywać, bo tak wygląda mój plik tsconfig.json:

{
    "compilerOptions": {
        "outDir": "out",
        "noErrorTruncation": true,
        "noFallthroughCasesInSwitch": true,
        "noImplicitReturns": true,
        "module": "CommonJS",
        "strict": true,
        "target": "ES6",
        "sourceMap": true,
        "resolveJsonModule": true
    }
}

Widać, że sugerowany parametr resolveJsonModule jest ustawiony na true. Do tego mam uruchomioną cały czas kompilację w watch mode, czyli "live", i ta kompilacja nie zwraca mi żadnego błędu…

Czy ktoś wie, czemu ten błąd się jednak pokazuje, i co zrobić, by się nie pokazywał?


PS. Aha, zapomniałem pokazać jeszcze jeden plik: .mocharc.json. Wygląda u mnie tak:

{
    "extension": [
        "ts"
    ],
    "spec": "app/test/**/*.test.ts",
    "require": "ts-node/register"
}
0

OK, udało mi się rozwiązać przez obejście.

Z jakiegoś powodu Mocha nie chce działać z instrukcją import (ES2015 Modules). Gdy zmieniłem na funkcję require (CommonJS modules oraz Node.js modules), już nie ma tego błędu (pokazują się od razu rezultaty testów).

Niemniej nadal chętnie dowiem się, jeśli ktoś wie:

  1. czemu Mocha nie chce działać z instrukcją import;
  2. jak można zrobić, żeby Mocha jednak działała z tą instrukcją.

1 użytkowników online, w tym zalogowanych: 0, gości: 1