gpt4 book ai didi

node.js - 如何在 TypeScript 中正确要求和声明 Node 库类型?

转载 作者:搜寻专家 更新时间:2023-10-30 20:38:23 25 4
gpt4 key购买 nike

我正在尝试为使用标准 Node 库的 TypeScript 中的 Node 编写一个包,例如 fspathstreamhttp等。

当我尝试在 .ts 文件中导入库时,VS Code 将相应的行标记为错误:
[ts] 找不到模块“fs”。无论我如何尝试导入库,都会发生这种情况:

import * as fs from 'fs';    // [ts] Cannot find module 'fs'
import fs = require('fs'); // [ts] Cannot find module 'fs'
const fs = require('fs'); // [ts] Cannot find name 'require'

enter image description here

我(应该)使用 typings install --save --ambient node 安装了正确的定义。

当我编译成 JavaScript(使用 gulpgulp-typescript,而不是 tsc)时,编译有效 并且语法高亮显示没有错误,直到我再次输入 1 个字符:

enter image description here

如何正确定义 TypeScript 的 Node 库?


我使用 VS Code 进行代码高亮显示和自动完成,使用 gulpgulp-typescript 进行编译,使用 typings 进行 typescript 库声明。

项目的目录结构:

├─ build/
│ └─ (output files)
├─ src/
│ └─ myfile.ts
├─ typings/
│ ├─ browser/
│ │ └─ ambient/
│ │ └─ node/
│ │ └─ index.d.ts
│ ├─ main/
│ │ └─ ambient/
│ │ └─ node/
│ │ └─ index.d.ts
│ ├─ browser.d.ts
│ └─ main.d.ts
├─ gulpfile.js
├─ package.json
├─ tsconfig.json
└─ typings.json

我的tsconfig.json:

{
"compileOnSave": false,
"compilerOptions": {
"declaration": true,
"module": "system",
"moduleResolution": "node",
"noEmitOnError": true,
"noImplicitAny": true,
"target": "es5"
},
"exclude": [
"node_modules",
"typings/browser",
"typings/browser.d.ts"
]
}

我的 typings.json:

{
"ambientDependencies": {
"node": "registry:dt/node#4.0.0+20160412142033"
}
}

还有我的 gulp 任务:

gulp.task('build-typescript', () => {
const gulpts = require('gulp-typescript');
const tsProject = gulpts.createProject('tsconfig.json', {
typescript: require('typescript'),
outFile: 'mylibrary.js',
noLib: true
});

let tsstream = (
gulp.src([
'node_modules/typescript/lib/lib.es6.d.ts',
'typings/main.d.ts',
'src/sharpscript.ts'])
.pipe(sourcemaps.init())
.pipe(gulpts(tsProject))
);

return require('merge2')(
tsstream.dts.pipe(gulp.dest('build')),
tsstream.js
.pipe(sourcemaps.write('.', { includeContent: true }))
.pipe(gulp.dest('build'))
);
});

如果有人遇到过同样的问题,我非常感谢您提供任何见解。

最佳答案

带有“typings install ...”的类型声明安装已经过时了几个月。新方法是直接通过 npm 和 @types 命名空间安装它。要安装 Node 类型声明,只需使用 npm install @types/node --save-dev

关于node.js - 如何在 TypeScript 中正确要求和声明 Node 库类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36810527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com