33

In a nodej project open in VsCode with checkJs enabled, when a json file is required like

const myFile = require('./my-file.json')

This makes an error [ts] Cannot find module.

How is it possible to remove the error warning?

I tried to:

  1. add "resolveJsonModule": true to the compilerOptions in jsconfig.json, but it does not work.

  2. create a typing.d.ts file with this content:

    declare module '*.json' { const value: any; export default value; } But now, there is an error [ts] Type 'typeof import("*.json")' must have a '[Symbol.iterator]()' method that returns an iterator. [2488]

AlxVallejo
  • 3,066
  • 6
  • 50
  • 74
François Romain
  • 13,617
  • 17
  • 89
  • 123
  • 1
    You don't need to specify json extension when you do a require. const myFile = require('./my-file'); – Thomas Lefetz Nov 15 '18 at 13:08
  • 1
    Thanks but there is the same error if there is no extension. The error shows up because the json file is not a `module`. (-> it has no `module.exports`) – François Romain Nov 15 '18 at 13:13
  • Check this answer, maybe that it can help you : https://stackoverflow.com/questions/49996456/importing-json-file-in-typescript – Thomas Lefetz Nov 15 '18 at 13:18

3 Answers3

19

You should add

"resolveJsonModule":true

as part of compilerOptions to tsconfig.json.

egdfer
  • 349
  • 3
  • 3
18

I had a similar problem when trying to import json from a file in a typescript project.

I used

import * as data from "module/path/filename.json"

instead of

const data = require("module/path/filename.json")

and it worked.

gvlasov
  • 18,638
  • 21
  • 74
  • 110
0

In my case, I had specified outDir and needed to put the json file at the output destination.

iwatachan
  • 159
  • 2
  • 8