J'ai installé les définitions de type de nœud à l'aide de la commande suivante
npm install --save-dev @types/node
Après cela, lorsque j'essaie d'importer les définitions de type de nœud à l'aide de l'instruction suivante
import { Process } from '@types/node';
ou
import { Process } from 'node';
Je reçois l'erreur suivante
[ts] File '<root_path>/node_modules/@types/node/index.d.ts' is not a module.
Je suis sûr qu'il y a quelque chose de très fondamental qui me manque, mais je ne peux pas comprendre.
Peu plus de choses
Voici à quoi ressemble mon tsconfig.json
{
"compilerOptions": {
"target": "es2015",
"module": "commonjs",
"outDir": "lib",
"typeRoots": [
"node_modules/@typings"
]
},
"exclude": [
"node_modules"
]
}
Et voici à quoi ressemble mon webpackconfig.js
var path = require('path');
module.exports = {
entry: './ts/handler.ts',
target: 'node',
module: {
loaders: [
{ test: /\.ts(x?)$/, loader: 'ts-loader' },
{ test: /\.json$/, loader: 'json-loader' }
]
},
resolve: {
extensions: ['.ts', '.js', '.tsx', '.jsx']
},
output: {
libraryTarget: 'commonjs',
path: path.join(__dirname, '.webpack'),
filename: 'handler.js'
},
};
À la place d'utiliser:
import { Process } from '@types/node';
Vous devez changer votre tsconfig.json
:
{
"compilerOptions": {
...
"typeRoots": ["node_modules/@types"]
}
}
Après cela, la variable de processus devient disponible en tant que globale.
Parfois, vous devrez importer depuis un module Node.js, comme par exemple le module fs
. Tu peux faire:
import * as fs from "fs";
Vous n'avez pas besoin d'importer fs
depuis "noeud" ou depuis "@ types/noeud".
Vous pouvez en apprendre plus ici .
C'est parce qu'à l'intérieur du fichier de typage de nœud, tout module a été déclaré avec le nom node.
Si tu utilises
import { Process } from 'node';
TypeScript essaiera également de trouver un module de noms node ou un espace de noms node
Ici vous pouvez charger le fichier complet en utilisant
import 'node';
Dans votre cas, vous souhaitez obtenir uniquement le processus de l'espace de noms NodeJS:
import 'NodeJS';
Après cela, il vous suffit de l'appeler comme suit:
class toto implements NodeJS.Process{
}
MODIFIER :
Si vous utilisez TypeScript> = 2.0, vous n’auriez pas besoin d’ajouter une importation dans votre fichier, mais seulement si vous voulez "optimiser l’importation"