次のコマンドを使用してノードタイプ定義をインストールしました
npm install --save-dev @types/node
その後、次のステートメントを使用してノードタイプ定義をインポートしようとすると
import { Process } from '@types/node';
または
import { Process } from 'node';
次のエラーが表示されます
[ts] File '<root_path>/node_modules/@types/node/index.d.ts' is not a module.
ここに欠けている非常に基本的な何かがあると確信していますが、わかりません。
もう少し
これが私のtsconfig.json
ルックス
{
"compilerOptions": {
"target": "es2015",
"module": "commonjs",
"outDir": "lib",
"typeRoots": [
"node_modules/@typings"
]
},
"exclude": [
"node_modules"
]
}
そして、これが私の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'
},
};
代わりに:
import { Process } from '@types/node';
tsconfig.json
を変更する必要があります:
{
"compilerOptions": {
...
"typeRoots": ["node_modules/@types"]
}
}
その後、プロセス変数はグローバルとして使用可能になります。
fs
モジュールなどのNode.jsモジュールからインポートする必要がある場合があります。できるよ:
import * as fs from "fs";
「node」または「@ types/node」からfs
をインポートする必要はありません。
詳細は こちら をご覧ください。
これは、ノードタイプファイル内で、モジュールがnodeという名前で宣言されているためです。
使用する場合
import { Process } from 'node';
TypeScriptはnode moduleまたはnode namespaceも見つけようとします
ここで、完全なファイルを使用してロードできます
import 'node';
あなたの場合、NodeJS名前空間からプロセスのみを取得したい:
import 'NodeJS';
その後、次のように呼び出す必要があります:
class toto implements NodeJS.Process{
}
編集:
TypeScript> = 2.0を使用する場合、「インポートを最適化」する場合のみ、ファイルにインポートを追加する必要はありません。