programing

TypeScript geting error TS2304: cannot find name ' required' (필요한 이름을 찾을

megabox 2023. 3. 25. 11:00
반응형

TypeScript geting error TS2304: cannot find name ' required' (필요한 이름을 찾을

첫 번째 TypeScript를 구하려고 하는데Node.js 응용 프로그램을 입력하여 실행 중이며 오류가 발생했습니다.

단순한 TypeScript Node.js 페이지를 변환하려고 하면 "TS2304: Cannot find name 'require" (TS2304: 이름 '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')linedisplaces를 합니다.

typings/tsd.d.ts 파일의 내용은 다음과 같습니다.

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

.d.ts 파일 참조는 적절한 폴더에 배치되고 다음 명령으로 typings/tsd.ts에 추가됩니다.

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

생성된 .js 파일은 정상적으로 동작하고 있는 것 같기 때문에, 에러는 무시할 수 있었습니다.그러나 이 에러가 발생하는 이유와 제가 무엇을 잘못하고 있는지 알려주시면 감사하겠습니다.

빠르고 지저분함

require를 사용하는 파일이 1개뿐이거나 데모 목적으로 사용하는 경우 TypeScript 파일의 맨 위에 require를 정의할 수 있습니다.

declare var require: any

TypeScript 2.x

TypeScript 2.x 를 사용하고 있는 경우는, 타이핑이나 Definally Type 을 인스톨 할 필요가 없습니다.다음 패키지를 설치하기만 하면 됩니다.

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

타이핑 사용(확실히)Typed's replacement)는 GitHub 저장소에서 직접 정의를 지정할 수 있습니다.

타이핑 설치

npm install typings -g --save-dev

요건을 인스톨 합니다.Definally에서 JS 유형 정의타입의 레포

typings install dt~node --save --global

웹 팩

웹 팩을 빌드 도구로 사용하는 경우 웹 팩 유형을 포함할 수 있습니다.

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

★★★의 tsconfig.json과 같이compilerOptions:

"types": [
      "webpack-env"
    ]

" " " 를 할 수 있습니다.require.ensure기타 웹 팩 고유의 기능.

각도 CLI

를 하면, 「types을 CLI 에 할 수 .tsconfig.app.json.

프리 인스톨 되어 있는 것을 .node타입. 클라이언트측 코드에 실제로 사용할 수 없는 타입이 추가되어 있는 것에 주의해 주세요.

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

TypeScript 2.x 에서는, 다음의 2개의 순서가 있습니다.

  1. 를 정의하는 를 인스톨 .require §:

    npm install @types/node --save-dev
    
  2. 시키도록 TypeScript에 합니다.tsconfig.json:

    {
        "compilerOptions": {
            "types": ["node"]
        }
    }
    

사용 예: '접근')에 하는 합니다.require의 패키지에 는, 「」를 사용해 .import package from 'package' 의 tsconfig. 패키지를 포함할 「tsconfig.json」은, 「tsconfig.json」으로, 「tsconfig.json」은 「tsconfig.json」으로 표시됩니다.

넌 할 수 있다.

declare var require: any

또는 보다 포괄적인 지원을 원하시면 Definally를 사용해 주십시오.입력필수.d.ts

, 「 」, 「 」var mongoose = require('mongoose') 해서 '하다, 하다, 하다, 하다'를해 볼 수

import mongoose from 'mongoose' // or
import mongoose = require('mongoose')

같은요.src/tsconfig.app.json를 덮어쓰고 있었다.tsconfig.json★★★★★★ 。

을 래래걸이에 가지고 있었습니다.tsconfig.json:

    "types": [
      "node"
    ]

이건 리고에 있는 거src/tsconfig.app.json:

    "types": []

이 오류로 인해 흰머리가 났기 때문에 누군가 도움이 되었으면 합니다.

이 답변은 최신 셋업에 관한 것입니다(TypeScript 2.x, Webpack > 2.x).

@types/node를 설치할 필요가 없습니다(모든 Node.js 타입이며 프런트 엔드 코드와 무관하며 setTimout의 다른 반환값 등 실제로 복잡합니다).

@types/webpack-env를 설치해야 합니다.

npm i -D @types/webpack-env

Webpack 포함)가 됩니다.require,require.ensure의 개요)

또한 tsconfig.json 파일에 node_modules/@types 폴더에 있는 모든 유형 정의가 선택되도록 설정된 'types' 배열이 없는지 확인합니다.

유형 검색을 제한하려면 typeRoot 속성을 node_modules/@types로 설정합니다.

대신:

'use strict';

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

시험:

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

'use strict';

즉, 기준 경로를 먼저 확인해야 합니다.

참고로 Angular 7.1.4, TypeScript 3.1.6을 사용하고 있습니다.필요한 것은 이 행을 추가하는 것 뿐입니다.tsconfig.json:

    "types": ["node"], // within compilerOptions

해결책은 TSD 명령어를 사용하는 것입니다.

tsd install node --save

아/아/아/아니다를 추가합니다.typings/tsd.d.ts파일 및 파일에는 노드 애플리케이션에 필요한 모든 유형 정의가 포함되어 있습니다.

내 파일 맨 위에, 내가 언급했던 것은tsd.d.ts음음음같 뭇매하다

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

2016년 1월 현재 요구사항은 다음과 같이 정의되어 있습니다.

declare var require: NodeRequire;

interface NodeModule {
    exports: any;
    require: NodeRequireFunction;
    id: string;
    filename: string;
    loaded: boolean;
    parent: any;
    children: any[];
}

피터 바르가의 대답을 듣고 덧붙였습니다declare var require: any;preprocess-module을 사용하여 모든 .ts 파일에 대해 일반적으로 동작하는 범용 솔루션으로 만들었습니다.

  1. install preprocessor-display:

    npm install preprocessor-loader
    
  2. 로더를 webpack.config.js에 추가합니다(TypeScript 소스를 처리하기 위해 ts-loader를 사용합니다).

    module: {
        loaders: [{
            test: /\.tsx?$/,
            loader: 'ts-loader!preprocessor?file&config=preprocess-ts.json'
        }]
    }
  1. 모든 소스에 회피책을 추가하는 설정을 추가합니다.
{
    "line": false,
    "file": true,
    "callbacks": [{
        "fileName": "all",
        "scope": "source",
        "callback": "(function shimRequire(source, fileName) { return 'declare var require: any;' + source; })"
    }]
}

보다 견고한 require.d.ts를 같은 방법으로 추가할 수 있지만declare var require: any;제 처지에서는 충분했습니다.

주의: 프리프로세서 1.0.5에 버그가 있어 마지막 행이 끊어집니다.따라서 마지막 행에 여분의 행 공간이 있는지 확인하세요.그러면 됩니다.

저는 angular compiler 옵션에 유형을 추가하여 해결합니다.

"angularCompilerOptions": {
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true,
"types": [ "node" ]
}

것을 으로 한 더 npm install @types/node★★★★★★★★★★★★★★★★를 포함한nodetsconfig.json / compilerOptions / types.

.tsConfig.jsonAngular 어플리케이션에서 이 어플리케이션을 확장하는 별도의 어플리케이션:

{
    "extends": "../../tsconfig.json",
    "compilerOptions": {
        "outDir": "../out-tsc/app",
        "types": []
 },

이었다.types 어학연습득.tsconfi.app.json - 네, 클로빙합니다.

import * as mongoose from 'mongoose'

승인된 답변에서는 실제로 자신의 타이핑 파일을 작성하여 Import할 수 있는 가능성은 언급되지 않았기 때문에 아래에 추가하겠습니다.

패키지 매니저로서 npm을 사용하고 있는 경우는, 다음과 같이 할 수 있습니다.

npm i @types/node --save-dev

그런 다음 tsconfig 파일에서 다음을 수행합니다.

tsconfig.json

"include": ["typings.d.ts"],

그런 다음 타이핑 파일을 만듭니다.

타이핑

import 'node/globals'

완료, 오류는 사라졌습니다.TypeScript를 즐겨주세요:)

저도 이 문제로 고민하고 있습니다.나는 이것모든 출시 후보에게 효과가 있다고 믿지만 나는 테스트하지 않았다.@angular rc.2의 경우 잘 작동합니다.

  1. core-js npm 'npm'package.json
  2. 려려를 typings install core-js --save
  3. 제거하다"es6-shim"에서의 package.json더 이상 필요없어

건배!

tsconfig.json에서 "jasmin"이 누락되면 이 오류가 발생할 수 있습니다(TypeScript 2).X)

추가하다

"types": [
  "node",
  "jasmine"
]

your tsconfig.jsonfilename을 클릭합니다.

전자 + 각도 2/4 추가:

ts하는 것 에 ts.config의 'node' 에 'node' 타입을 하는 것도 .typings.d.ts 삭제:

declare var window: Window;
interface Window {
  process: any;
  require: any;
}

케이스는 Electron + Angular 2/4로 전개되고 있습니다.글로벌 윈도우에 대한 요구 사항이 필요했습니다.

  1. 코드를 변환하는 데 사용할 모듈을 지정했습니까?
    tsc --target es5 --module commonjs script.ts
    이를 통해 트랜스파일러가 노드를 컴파일하고 있음을 알 수 있어야 합니다.JS 코드문서

  2. 는 wellmongoose로.
    tsd install mongoose --save

  3. 「 」를하지 주세요.var필요하지 않은 , 경우 """를 합니다.let대신.자세한 것은 이쪽

cgatian의 답변과 더불어 TypeScript 1.x의 경우

그래도 오류가 발생할 경우 컴파일러 옵션에 index.d.ts를 구체적으로 입력하십시오.

"files": [
    "typings/index.d.ts"
]

되어 것을 .npm i @types/node

위의 트릭 중 하나를 사용하여 '요구' 오류를 제거할 수 없었습니다.

그러나 현재 이전 버전(1.8.6.0)과 최신 버전이 (2.0.6.0)인 Visual Studio용 TypeScript 툴이 문제임을 알게 되었습니다.

다음 사이트에서 최신 버전의 도구를 다운로드할 수 있습니다.

Visual Studio 2015용 TypeScript

코드를 컴파일할 수 있지만 Visual Studio 2015에서 이름 'require'찾을없거나 기호 'require'해결할 수 없는 오류가 발생한 경우 Visual Studio 2015용 TypeScript를 최신 버전(2.1.5)으로 업데이트하고 ReSharper(사용하는 경우)를 2016.3.2 이상으로 업데이트하십시오.

한동안 이런 귀찮은 문제가 있어서 해결책을 찾지 못했는데, 결국 이렇게 해결했어요.

다음 을 추가합니다.tsconfig.json:

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

Yarn v3을 사용 중 VSCode에서 이 오류(이름 필요를 찾을 수 없음) 또는 기타 노드 관련 "찾을 수 없음" 오류가 발생할 경우 Yarn의 VSCode sdk 플러그인이 설치되어 있고 Typescript의 작업 공간 버전을 선택했는지 확인하십시오.

sdks를 설치하는 명령어:

yarn dlx @yarnpkg/sdks

Typescript 버전을 설정하려면:

  1. Typescript 파일을 선택합니다.
  2. 명령 + Shift + P를 누릅니다.
  3. 유형 스크립트:유형 스크립트 버전 선택
  • "워크스페이스 버전 사용"을 선택합니다.

상세한 것에 대하여는, https://yarnpkg.com/getting-started/editor-sdks#vscode 를 참조해 주세요.

일정한 값만 제공하는 .ts 파일에서 이 문제가 발생할 경우 다음과 같이 하십시오.

.ts 파일의 이름을 .ts 파일로 변경합니다.

에러는 재발하지 않습니다.

언급URL : https://stackoverflow.com/questions/31173738/typescript-getting-error-ts2304-cannot-find-name-require

반응형