1. ホーム
  2. node.js

[解決済み] TypeScript getting error TS2304: cannot find name ' require'.

2022-02-10 16:13:54

質問

最初のTypeScriptとDefinitelyTyped Node.jsのアプリケーションを立ち上げようとしていますが、いくつかのエラーに遭遇しています。

単純なTypeScript Node.jsのページをトランスパイルしようとすると、エラー "TS2304: Cannot find name 'require' " が表示されます。Stack Overflowでこのエラーの他の発生例をいくつか読みましたが、同様の問題があるとは思えません。 私はシェルプロンプトでコマンドを実行しています。

tsc movie.server.model.ts.

このファイルの中身は

'use strict';

/// <reference path="typings/tsd.d.ts" />

/*    movie.server.model.ts - definition of movie schema */

var mongoose = require('mongoose'),
Schema = mongoose.Schema;

var foo = 'test';

でエラーが発生します。 var mongoose=require('mongoose') の行になります。

typings/tsd.d.tsファイルの中身は。

/// <reference path="node/node.d.ts" />
/// <reference path="requirejs/require.d.ts" />

.d.tsファイルの参照を適切なフォルダに配置し、コマンドでtyping/tsd.d.tsに追加しました。

tsd install node --save
tsd install require --save

生成された.jsファイルは問題なく動作しているようなので、このエラーは無視できました。しかし、なぜこのエラーが発生するのか、何が間違っているのかを教えていただけると幸いです。

解決方法を教えてください。

クイック&ダーティ

requireを使用するファイルが1つだけであったり、デモのために使用する場合は、TypeScriptファイルの先頭でrequireを定義することができます。

declare var require: any

TypeScript 2.x

TypeScript 2.xを使用している場合、TypingsやDefinitely Typedをインストールする必要はありません。以下のパッケージをインストールするだけです。

npm install @types/node --save-dev

宣言ファイルの今後について(2016/6/15)

<ブロッククオート

Typingsやtsdのようなツールは今後も機能し続けますし、私たちは これらのコミュニティと一緒に、スムーズな移行ができるようにします。

を確認または編集します。 src /tsconfig.app.jsonに以下の内容が含まれるようにします。

...
"types": [ "node" ],
"typeRoots": [ "../node_modules/@types" ]
...

の中にファイルがあることを確認してください。 src フォルダにあり、アプリのルートフォルダにあるものではありません。

デフォルトでは、@types以下のパッケージはすでにビルドに含まれています。 ない限り のどちらかを指定してください。 続きを読む

TypeScript 1.x

typings(DefinitelyTypedの代替)を使用すると、GitHubのリポジトリから直接定義を指定することができます。

typingsのインストール

npm install typings -g --save-dev

DefinitelyTypeのレポからrequireJSの型定義をインストールします。

typings install dt~node --save --global

ウェブパック

ビルドツールとしてWebpackを使用している場合、Webpackの種類を含めることができます。

npm install --save-dev @types/webpack-env

を更新してください。 tsconfig.json の下に以下を追加します。 compilerOptions :

"types": [
      "webpack-env"
    ]

これにより、以下のようなことが可能になります。 require.ensure といった Webpack 固有の機能を提供します。

Angular CLI

CLI を使用すると、上記の Webpack の手順に従って、"types" ブロックを tsconfig.app.json .

あるいは、プリインストールされている node の型があります。この場合、クライアント側のコードに、実際には利用できない追加の型が含まれることに留意してください。

"compilerOptions": {
    // other options
    "types": [
      "node"
    ]
  }