NodeJS typescript配置以使 Helm 导入工作

zyfwsgd6  于 2023-08-04  发布在  Node.js
关注(0)|答案(1)|浏览(115)

所以我刚开始接触打字机遇到了一些小问题。所以我使用这一行在我项目中导入helmet:

import * as helmet from "helmet";

字符串
但是我一直在犯这个错误

src/index.ts:3:25 - error TS7016: Could not find a declaration file for module 'helmet'. 'D:/Dev/ticktack/node_modules/helmet/index.cjs' implicitly has an 'any' type.
  Try `npm i --save-dev @types/helmet` if it exists or add a new declaration (.d.ts) file containing `declare module 'helmet';`


不,安装@types/helmet不会工作,因为该软件包只是一个空存根。我想到的第一个解决方案是在导入行希望“修复”它之前使用// @ts-ignore。但它惹恼了我去看看 Helm 模块,他们确实提供了 .d.cts.d.mts 文件,但ts-node不承认他们,事实上,只是改变一个从index.d.ctsindex.d.ts真正修复了它。
现在我怀疑这是一个问题,在我的tsconfig,所以可以有人请帮助我?!
下面是我tsconfig:

{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "lib": ["dom", "es6", "es2017"],
    "skipLibCheck": true,
    "sourceMap": true,
    "outDir": "./dist",
    "moduleResolution": "node",
    "removeComments": true,
    "noImplicitAny": true,
    "strictNullChecks": true,
    "strictFunctionTypes": true,
    "noImplicitThis": true,
    "noUnusedLocals": false,
    "noUnusedParameters": false,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "resolveJsonModule": true,
    "baseUrl": ".",
    "typeRoots": ["./node_modules/@types", "src/types"]
  },
  "exclude": ["node_modules"],
  "include": ["./src/**/*.tsx", "./src/**/*.ts"]
}

**编辑:**这个项目是用typeORM init和express,here's a sapmle of my setup搭建的。这也许能解释我为什么会有这些问题

kcwpcxri

kcwpcxri1#

您收到此错误是因为您使用的TypeScript(4.5.2)与您的Helmet(7.0.0)版本不兼容/旧版本。
将TypeScript更新到最新版本(截至撰写本文时为5.1.6)以解决问题:
npm i -D typescript@latest
pnpm add -D typescript@latest
yarn add -D typescript@latest
这取决于您选择的包管理器。:)
来源:"typescript": "^5.1.6"作为Helmet repo中的开发依赖项(截至撰写本文时)https://github.com/helmetjs/helmet/blob/main/package.json

相关问题