I have a TypeScript project, where the test are written in TypeScript. I want to use mocha
to directly test TS files. I'm using ts-node for that, as described in ts-node#mocha . In the project I'm using a JS library which doesn't have TS type definitions. So I created a d.ts
file for that. Everything works well when compiling and running the projects. However mocha fails with:
% yarn mocha --require ts-node/register --require source-map-support/register ./test/*.ts
src/client.ts:3:26 - error TS7016: Could not find a declaration file for module 'algosdk'. '/home/robert/projects/algorand/ts-mocha/node_modules/algosdk/index.js' implicitly has an 'any' type.
Try `npm install @types/algosdk` if it exists or add a new declaration (.d.ts) file containing `declare module 'algosdk';`
3 import * as algosdk from "algosdk";
It seams that ts-node doesn't recognize the d.ts
files.
The only solution which works is to use require
instead of import
statement, but this will not link the types to algosdk.
This is the project structure (also in github ):
├── build <-- JS from compiled TS go here
├── node_modules
├── package.json
├── src
├── @types <-- d.ts files
├── test
├── tsconfig.json
The tsconfig.json
:
{
"compilerOptions": {
"target": "es2017",
"lib": ["esnext"],
"module": "commonjs",
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"outDir": "./build",
"typeRoots" : ["./@types", "node_modules/@types"]
},
"exclude": ["**/node_modules"],
"include": [
"src",
"test",
"@types"
]
}
I confirm that the problem is related to ts-node
, not to mocha
. Running:
yarn ts-node src/client.ts
returns the same error.
you can add the following configuration to tsconfig.json
file.
"ts-node": {
"files": true
},
it works well on my side.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.