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
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개의 순서가 있습니다.
를 정의하는 를 인스톨 .
require
§:npm install @types/node --save-dev
시키도록 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 파일에 대해 일반적으로 동작하는 범용 솔루션으로 만들었습니다.
install preprocessor-display:
npm install preprocessor-loader
로더를 webpack.config.js에 추가합니다(TypeScript 소스를 처리하기 위해 ts-loader를 사용합니다).
module: {
loaders: [{
test: /\.tsx?$/,
loader: 'ts-loader!preprocessor?file&config=preprocess-ts.json'
}]
}
- 모든 소스에 회피책을 추가하는 설정을 추가합니다.
{
"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
★★★★★★★★★★★★★★★★를 포함한node
tsconfig.json / compilerOptions / types
.
.tsConfig.json
Angular 어플리케이션에서 이 어플리케이션을 확장하는 별도의 어플리케이션:
{
"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의 경우 잘 작동합니다.
core-js
npm 'npm'package.json
- 려려를
typings install core-js --save
- 제거하다
"es6-shim"
에서의package.json
더 이상 필요없어
건배!
tsconfig.json에서 "jasmin"이 누락되면 이 오류가 발생할 수 있습니다(TypeScript 2).X)
추가하다
"types": [
"node",
"jasmine"
]
your tsconfig.json
filename을 클릭합니다.
전자 + 각도 2/4 추가:
ts하는 것 에 ts.config의 'node' 에 'node' 타입을 하는 것도 .typings.d.ts
삭제:
declare var window: Window;
interface Window {
process: any;
require: any;
}
케이스는 Electron + Angular 2/4로 전개되고 있습니다.글로벌 윈도우에 대한 요구 사항이 필요했습니다.
코드를 변환하는 데 사용할 모듈을 지정했습니까?
tsc --target es5 --module commonjs script.ts
이를 통해 트랜스파일러가 노드를 컴파일하고 있음을 알 수 있어야 합니다.JS 코드문서는 wellmongoose로.
tsd install mongoose --save
「 」를하지 주세요.
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 버전을 설정하려면:
- Typescript 파일을 선택합니다.
- 명령 + Shift + P를 누릅니다.
- 유형 스크립트:유형 스크립트 버전 선택
- "워크스페이스 버전 사용"을 선택합니다.
상세한 것에 대하여는, 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
'programing' 카테고리의 다른 글
개발 데이터베이스와 운영 데이터베이스를 병합하는 가장 좋은 방법은 무엇입니까? (0) | 2023.03.25 |
---|---|
리액트 renderToString() 퍼포먼스 및 캐시 리액트컴포넌트 (0) | 2023.03.25 |
Create-React-App 기반 프로젝트에 글꼴을 추가하는 방법 (0) | 2023.03.25 |
연간 월별 그룹 쿼리 방법 (0) | 2023.03.25 |
함수의 반환 유형 가져오기 (0) | 2023.03.25 |