μλ
νμΈμ, μ λ typescriptλ‘ λ°μμ μ¬μ©νλ €κ³ νλλ° νλ‘μ νΈλ₯Ό μμνκΈ° μν΄ ( react
, react-dom
), ( @types/react
, @types/react-dom
)λ₯Ό μ€μΉνμ΅λλ€. ERROR in [at-loader] ./node_modules/@types/react/index.d.ts:55:22
Cannot find module 'csstype'
μ€λ₯κ° λ°μν©λλ€. @types/react
λ° νλ‘μ νΈ λ£¨νΈμμ npm i csstype
λ₯Ό μλνμ΅λλ€. λν μ€λ₯μλ λΆκ΅¬νκ³ @types/react
λͺ¨λμλ node_modules/csstype ν΄λκ° μμΌλ―λ‘ μ΄ μ€λ₯κ° λ°μνλ μ΄μ μ‘°μ°¨ λͺ¨λ₯΄κ² μ΅λλ€.
tsconfig.json
{
"compilerOptions": {
"outDir": "./build/", // path to output directory
"strictNullChecks": true, // enable strict null checks as a best practice
"module": "es6", // specify module code generation
"jsx": "react", // use typescript to transpile jsx to js
"target": "es5", // specify ECMAScript target version
"allowJs": true, // allow a partial TypeScript and JavaScript codebase
"noImplicitAny": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
},
"exclude": [
"node_modules"
],
"include": [
"./source/**/*.tsx",
"./source/**/*.ts"
]
}
ν¨ν€μ§.json
{
"name": "suggestion-app",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"scripts": {
"webpack:server": "babel-node node_modules/.bin/webpack-dev-server --mode=development"
},
"dependencies": {
"react": "^16.3.1",
"react-dom": "^16.3.1"
},
"devDependencies": {
"@types/react": "^16.3.5",
"@types/react-dom": "^16.0.4",
"babel-cli": "^6.26.0",
"babel-preset-env": "^1.6.1",
"babel-preset-stage-3": "^6.24.1",
"caniuse-lite": "^1.0.30000697",
"clean-webpack-plugin": "^0.1.19",
"css-loader": "^0.28.11",
"eslint": "^4.19.1",
"eslint-config-airbnb": "^16.1.0",
"eslint-plugin-import": "^2.10.0",
"eslint-plugin-jsx-a11y": "^6.0.3",
"eslint-plugin-react": "^7.7.0",
"file-loader": "^1.1.11",
"glob": "^7.1.2",
"html-webpack-plugin": "^3.2.0",
"mini-css-extract-plugin": "^0.4.0",
"postcss-cssnext": "^3.1.0",
"postcss-loader": "^2.1.3",
"purify-css": "^1.2.5",
"purifycss-webpack": "^0.7.0",
"script-ext-html-webpack-plugin": "^2.0.1",
"webpack": "^4.5.0",
"webpack-cli": "^2.0.14",
"webpack-dev-server": "^3.1.1"
}
}
μμ€/μΈλ±μ€.ts
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import './styles/main.css';
ReactDOM.render(
<h1>Hello, world!</h1>,
document.getElementById('root')
);
μ΄μ 체μ : μ°λΆν¬ 17.10
compilerOptions.moduleResolution: "node"
μλ
(Ortaμ μν΄ νΈμ§: λ§μΌ λΉμ μ΄ μ΄κ²μ νμ€ν Typed λ΄λΆμμ λ³΄κ³ μλ€λ©΄, λΉμ μ λΉμ μ΄ κ·Έ μ€λ₯λ₯Ό λ³΄κ³ μλ μ’
μμ±μμ npm install
λ₯Ό μ€νν΄μΌ ν©λλ€. μλ₯Ό λ€μ΄ cd types/react; npm install
κ·Έλ¦¬κ³ λμ λͺ©λ‘μ΄ λ μ’μμΌ ν©λλ€ - httpsλ₯Ό μ°Έμ‘°νμμμ€: //github.com/microsoft/dtslint/issues/226 )
λλμ΄ μ€λ₯κ° λ°μνμ΅λλ€.
moduleResolution: true
μ€λ₯κ° λ°μ νκ³ λ¬Έμ μ μ ν¨ν κ°μΌλ‘ λμ΄λμ§ μμ΅λλ€. νμ§λ§ moduleResolution: "node"
μ€μ νλ©΄ μμ
μ΄ μλ£λ κ² κ°μ΅λλ€ π κ°μ¬ν©λλ€!
μ£μ‘ν©λλ€ "node"
λΌκ³ νλ €λκ±΄λ° π λκΈμ΄ λ°λμμ΅λλ€. λμμ΄ λμλ€λ λ€νμ
λλ€.
Set "moduleResolution": "node"
λμκ²λ μ μ©ν©λλ€.
κ³ λ§μ νλ λ. μ μκ²λ ν¨κ³Όμ μ λλ€.
λꡬλ μ§ κ·Έ μ΄μ μ λν΄ μμμ μ 곡ν μ μμ΅λκΉ? μ΄ μ€μ μ λΆνμνκ² λ§λλ μ λ°μ΄νΈκ° μμ΅λκΉ?
compilerOptions.module === "AMD" or "System" or "ES6"
μ κΈ°λ³Έκ°μ΄ compilerOptions.moduleResolution
μ΄λ©΄ "Classic"
μ΄κ³ , κ·Έλ μ§ μμΌλ©΄ "Node"
μ
λλ€. λ°λΌμ μ΄λ¬ν λͺ¨λ μ λ΅ μ€ νλλ₯Ό μ¬μ©νμ§λ§ λͺ¨λ ν¨ν€μ§κ° node_modules
μ
λλ€. compilerOptions.moduleResolution
λ "Node"
λ‘ μ€μ ν΄μΌ ν©λλ€.
Classic
:
κ·Έλ¬λ μλμ μ΄μ§ μμ λͺ¨λ κ°μ Έμ€κΈ°μ κ²½μ° μ»΄νμΌλ¬λ μΌμΉνλ μ μ νμΌμ μ°ΎμΌλ €κ³ κ°μ Έμ€κΈ° νμΌμ΄ ν¬ν¨λ λλ ν 리μμ μμνλ λλ ν 리 νΈλ¦¬λ₯Ό κ²μν©λλ€.
Node
:
Nodeλ node_modulesλΌλ νΉμ ν΄λμμ λͺ¨λμ μ°Ύμ΅λλ€. node_modules ν΄λλ νμ¬ νμΌκ³Ό κ°μ μμ€μ μκ±°λ λλ ν°λ¦¬ 체μΈμμ μμμ μμ μ μμ΅λλ€. λ Έλλ λ‘λνλ €κ³ μλν λͺ¨λμ μ°Ύμ λκΉμ§ κ° node_modulesλ₯Ό μ΄ν΄λ³΄κ³ λλ ν°λ¦¬ 체μΈμ κ±Έμ΄ μ¬λΌκ°λλ€.
( μΆμ² )
"module": "commonjs"
μ΄ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€. μλν΄ λ³΄μΈμ.
μ¬μ©νλ μ¬λλ€μ μν΄ classic
_don't_κ°μ λ³νλ₯Ό μνλ μ¬λλ€ λͺ¨λ ν΄μλλ₯Ό node
λͺ¨λ ν΄μλ, λλ μΆκ°νμ¬μ΄ λ¬Έμ λ₯Ό μ£Όλ³μ μ»μ μ μμλ€ paths
λν νλͺ©μ csstype
in my tsconfig.json
λ΄ νλ‘μ νΈκ° baseUrl
κ΅¬μ± μ΅μ
μ μ¬μ©νκ³ μκΈ° λλ¬Έμ
λλ€. μμΈν λ΄μ©μ baseUrl λ¬Έμ λ₯Ό μ°Έμ‘°νμΈμ.
λΆλͺ
ν μ΄κ²μ μ΄μ κ°μ μΆ©λμ΄ λ§μ κ²½μ° νμ₯ κ°λ₯ν μ κ·Ό λ°©μμ΄ μλμ§λ§ μ΄κ²μ΄ μ°λ¦¬μ 첫 λ²μ§ΈμμΌλ©° node
λͺ¨λ ν΄μλλ‘ μ ννλ κ²μ κ³ λ €νλ €λ κ²½μ° μ΅μν μκ°μ
λλ μ΄κ²μ λ°μ΄ λ€μλ€.
WebPack + TypeScriptλ₯Ό ν΅ν΄
Module not found: Error: Can't resolve 'csstype'
κ½€ ν΄ν€ μΌ κ°λ₯μ±μ΄ μμ§λ§ TS 2.9λΆν° import()
μ νμ ν μ μμ΅λλ€. (https://blogs.msdn.microsoft.com/typescript/2018/05/31/announcing-typescript -2-9/#import-types), κ·Έλμ λλ μ΄κ²μνκ³ λΆνμμ΄ μ§κΈ μ»΄νμΌλ©λλ€.
type VisibilityProperty = import('csstype').VisibilityProperty;
type AnimationProperty = import('csstype').AnimationProperty;
μλ
νμΈμ. compilerOptions.moduleResolution: "node"
μ€μ μ μ μ ν΄ μ£Όμ
μ κ°μ¬ν©λλ€.
κ·Έλ¬λ λΆννλ create-react-app-typescriptλ₯Ό μ¬μ©νμ¬ νλ‘μ νΈλ₯Ό
κ³μ νμΈνκ² μ§λ§ λκ΅°κ°κ° μ΄λ―Έ λ΅μ μκ³ μκ³ ν΄κ²° λ°©λ²μ μλ €μ€ μ μλ€λ©΄ μ’μ κ²μ λλ€ :-)
μ
λ°μ΄νΈ : λ΄ λμ μ€μ μ μ£μ‘ν©λλ€ -μ΄ μΈ tsconfig.test.json
λ‘ λͺ¨λ μ€μ νλμ§ commonjs
νκ³ μΆκ° "moduleResolution": "node"
κ·Έκ²μ ν΄κ²° ν κ²μΌλ‘ 보μΈλ€.
λλ μ²΄ν¬ μμνκ³ types/react-tag-autocomplete
μ€ν npm run lint react-tag-autocomplete
. error TS2307: Cannot find module 'csstype'
κ°μ μ€λ₯κ° λ°μν©λλ€.
μ²¨κ° ν "moduleResolution": "node",
μ compilerOptions
μ react-tag-complete
'Sλ tsconfig.json
: κ·Έκ²μ μ€λ₯ μ 곡 Error: Unexpected compiler option moduleResolution
.
λμμ΄ λμ ¨λμ?
μ΄κ²μ λ°μμ μμ‘΄νλ μ ν μ μλ₯Ό μμ±νλ €κ³ μ μ°λ λλ₯Ό λ―ΈμΉκ² λ§λ€μμ΅λλ€. csstype
λΌμ΄λΈλ¬λ¦¬μλ μ체 TS μ μκ° μμΌλ―λ‘ μ΄ μ μ₯μμ /types
λλ ν 리μ μμ΅λλ€. μ΄ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ dtslintμμ λ¬Έμ λ₯Ό λ§λ€μμ΅λλ€.
μ μκ²λ moduleResolution
맀κ°λ³μ μ€μ μ΄ μλνμ§ μμκΈ° λλ¬Έμ @mike-marcacciκ° dtslint
repoμμ μ κΈ° ν
cd types/react
npm i
@Rahul-Sagore λΉμ κ³Ό κ°μ μ€λ₯κ° λ°μν©λλ€. μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ λ°©λ²μ μμλΈ μ μ΄ μμ΅λκΉ?
@mcmar μλμ.
@Rahul-Sagore λΉμ κ³Ό κ°μ μ€λ₯κ° λ°μν©λλ€. μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ λ°©λ²μ μμλΈ μ μ΄ μμ΅λκΉ?
types/react
μ’
μμ±μ μ€μΉν΄μΌ νλ©° μλν©λλ€. :)
μ΄ λ΅μ₯μ νμλ λλ‘ https://github.com/DefinitelyTyped/DefinitelyTyped/issues/24788#issuecomment -495861835
λλ λνμ΄ λ¬Έμ κ° μμ΅λλ€.
"moduleResolution": "node",
μ€μ μ€λ₯ Error: Unexpected compiler option moduleResolution
cd types\react
npm i
κ·Έλ° λ€μ npm run lint <my-package>
μ€ννλ©΄ csstype
μ κ°μ μμ²λ μμ μ€λ₯κ° νμλ©λλ€.
../react/node_modules/csstype/index.d.ts(2071,31): error TS1005: '(' expected.
../react/node_modules/csstype/index.d.ts(2083,19): error TS2693: 'LetterSpacingProperty' only refers to a type, but is being used as a value here.
../react/node_modules/csstype/index.d.ts(2083,49): error TS1005: '(' expected.
../react/node_modules/csstype/index.d.ts(2096,15): error TS2693: 'LineBreakProperty' only refers to a type, but is being used as a value here.
κ·Έλ¦¬κ³ μλ°± κ°μ μ μ¬ν λΌμΈ
1/2 λ¨κ³λ₯Ό μνν ν @fyodore82 μ λμΌν μ€λ₯
λλ¬Έμ "N"μΌλ‘ "λ Έλ"λ₯Ό μμ±νμ¬ ν΄κ²°νμμμ€.
"moduleResolution": "Node"
μ°λ¦¬ μͺ½μμ μλν©λλ€.
https://www.typescriptlang.org/docs/handbook/compiler-options.html
"moduleResolution": "Node"
μ루μ
μΌλ‘ ν΄κ²°λμ§ μμμ§λ§ /types/react
λλ ν λ¦¬λ‘ μ΄λνμ¬ npm install
μ€ννλ©΄ λ¬Έμ κ° ν΄κ²°λμμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
compilerOptions.moduleResolution: "node"
μλ(Ortaμ μν΄ νΈμ§: λ§μΌ λΉμ μ΄ μ΄κ²μ νμ€ν Typed λ΄λΆμμ λ³΄κ³ μλ€λ©΄, λΉμ μ λΉμ μ΄ κ·Έ μ€λ₯λ₯Ό λ³΄κ³ μλ μ’ μμ±μμ
npm install
λ₯Ό μ€νν΄μΌ ν©λλ€. μλ₯Ό λ€μ΄cd types/react; npm install
κ·Έλ¦¬κ³ λμ λͺ©λ‘μ΄ λ μ’μμΌ ν©λλ€ - httpsλ₯Ό μ°Έμ‘°νμμμ€: //github.com/microsoft/dtslint/issues/226 )