Node.js – Importing node and express with typings in TypeScript

node.jstypescriptvisual-studio-code

I am trying to set up a TypeScript express/node application in Visual Studio Code following the Microsoft guide but changing it to use TypeScript however when it comes to installing the type definitions using typings I seem to have to install more packages than the guide.

I'm running the following pair of commands:

typings install node --ambient --save
typings install express --ambient --save

However attempting to build with just those packages gives the following type of error:

error TS2307: Cannot find module 'serve-static'.

For the following typings:

  • mime
  • express-serve-static-core
  • serve-static

I can resolve this by installing the required typings but it seems like something typings should do by itself.

I wanted to check if I was missing a fundamental step to automatically pull in dependencies or whether the guide was outdated?

In case it's relevant, my tsconfig.json:

{
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "sourceMap": true,
        "outDir": "bin",
        "sourceRoot": "src"
    },
    "exclude": [
        "node_modules",
        "typings/browser.d.ts",
        "typings/browser"
    ]
}

My tsc is version 1.8.7 and I have typescript installed globally.

Best Answer

As of the release of TypeScript 2.0 last month, the recommended tool for installing typings is our trusty old friend npm instead of typings or tsd.

npm install @types/node --save

With npm, there's no need to worry about "global" or "ambient" installations anymore.

You also don't need to worry about adding <reference> tags to the top of your source files anymore; just drop the following property into your compilerOptions in tsconfig.json, and the TypeScript compiler will automatically find the npm typings you've installed:

"typeRoots": [ "node_modules/@types" ]

Here's a blog post that explains the change in some more detail: https://blogs.msdn.microsoft.com/typescript/2016/06/15/the-future-of-declaration-files/

Related Topic