在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在typescript里面怎么使用require方法呢? const jQuery = require('jquery');
const fip = require( '@fonticonpicker/fonticonpicker' )( jQuery );
如果什么都不做,直接在项目里面使用,会得到以下错误: `Cannot find name 'require' 以下方法可以解决上面的错误: 1. Install using yarn add @types/node or npm install @types/node --save-dev 2. Add "node" to the "types" option in your tsconfig.json, so it looks like "types": ["node"]. 那么为什么要做第二步呢?其实做不做第二步是要分情况的。想要解释这个问题我们就需要先了解 @types, typeRoots 和 types 三者是什么意思,它们之间有什么关系。下面是官网的解释 https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#types-typeroots-and-types If
This config file will include all packages under If
This A types package is a folder with a file called Specify Keep in mind that automatic inclusion is only important if you’re using files with global declarations (as opposed to files declared as modules). If you use an
总结一下上面一段话的意思就是: @types 指的是文件夹 ./node-modules/@types/... 下面含有indes.d.ts或者package.json文件的module; 如果types属性没有被设置,那么会加载typeRoots属性里面设置的模块。而用import关键字导入的模块,编译器还是会在 上面的总结应该解决了我上面提出的问题:为什么第二步做与不做是分情况的。 如果在tsconfig.json文件里面设置了 "typeRoots": [
"node_modules/@types"
]
{ "compileOnSave": false, "compilerOptions": { "baseUrl": "./", "outDir": "./dist/out-tsc", "sourceMap": true, "declaration": true, "moduleResolution": "node", "emitDecoratorMetadata": true, "experimentalDecorators": true, "target": "es5","typeRoots": [ "node_modules/@types" ], "lib": [ "es2017", "dom" ] } } 如果你的项目中的tsconfig.json文件中已经设置了 "types": [....] 属性,那么需要把node模块也加在里面;否则编译器只会编译"types":[...]属性中列出来的模块,而不管typeRoots里面列的模块。 { "compileOnSave": false, "compilerOptions": { "baseUrl": "./", "outDir": "./dist/out-tsc", "sourceMap": true, "declaration": true, "moduleResolution": "node", "emitDecoratorMetadata": true, "experimentalDecorators": true, "target": "es5", "types": ["jquery", "node"], "typeRoots": [ "node_modules/@types" ], "lib": [ "es2017", "dom" ] } }
|
请发表评论