17

I would like to use npm module in Typescript project but there is no typings or tsd for this module. When I try use import Module from 'module' I had an error : Cannot find module 'module'. Is there way to fix it?

[EDIT] My tsconfig.json:

{
  "compilerOptions": {
    "target": "ES5",
    "moduleResolution": "node",
    "module": "commonjs",
    "noEmitOnError": true,
    "noImplicitAny": true,
    "experimentalDecorators": true,
    "sourceMap": true,
    "sourceRoot": "src",
    "outDir": "bld"
  },
  "exclude": [
    "bld"
  ]
}
1

3 Answers 3

20

I assume your question is related to importing the module

import Module from 'module'

And not exporting it as you stated. If this is the case your can fall back to plain javascript and require module like this:

var Module = require('module');

[EDIT]

Verify that in tsconfig.json you have the following lines in compiler options:

"compilerOptions": { 
    "moduleResolution": "node",
    "module": "commonjs"
}

Hope this helps.

Sign up to request clarification or add additional context in comments.

6 Comments

Yes, it's question about importing. For me doesn't work both variants. I guess, the problem is that there is no type definition for module, and typescript don't looking for it in node_modules. But I don't know how to fix it.
No you do not need type definitions for the second version. Check updated answer.
I fixed tsconfig.json according to your changes, but had the same error: Cannot find module 'module'. Check updated tsconfig.json, please
Have you installed the module? can you verify that the module's folder is present in your 'node_modules' folder?
The only thing that comes to mind is that your module is not compiled targeting commonjs. You can test this with using any other module without definitions. Take for example 'merge2' install it via npm and verify that var merge = require('merge2'); works.
|
2

In case you wish not to pollute your imports with requires, you can follow the following method.

You can create a module.d.ts definition file which contains the following

declare module Module {}

Your imports should work now.

If you wish to import something like

import { abc } from 'module';

just go ahead and add the following to module.d.ts

declare module Module {
    export let abc: any
}

Comments

1

By example: npm install numwords

Then added the import the .ts file: import * as numwords from 'num-words';

And then the usage: console.log((numwords(5));

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.