带有 typescript es6 导入语法的 html-validator 模块

Posted

技术标签:

【中文标题】带有 typescript es6 导入语法的 html-validator 模块【英文标题】:html-validator module with typescript es6 import syntax 【发布时间】:2019-07-06 02:14:10 【问题描述】:

我想用 es6 语法导入 html-validator 模块。

import validator from 'html-validator';

我收到此错误:

找不到模块“html-validator”的声明文件。 '.../node_modules/html-validator/index.js' 隐含地具有“任何”类型。尝试npm install @types/html-validator(如果存在)或添加包含declare module 'html-validator'; 的新声明(.d.ts)文件

所以@types/html-validator 不存在。

我已经在 .ds.ts 文件中声明了模块:

declare module 'html-validator' 
  export =  validator;

我又遇到了一个错误:

扩充中的模块名称无效。模块“html-validator”解析为“.../node_modules/html-validator/index.js”处的无类型模块,无法扩充

这是我的tsconfig.json


  "compilerOptions": 
    "target": "es5",
    "module": "commonjs",
    "lib": ["es6","dom"],
    "outDir": "build",
    "rootDir": "src",
    "strict": true,
    "esModuleInterop": true,
    "resolveJsonModule": true
  

这很好用。

 const validator = require('html-validator');

但我更喜欢 es6 版本

【问题讨论】:

【参考方案1】:

据我所知,我在npm 上看不到像@types/html-validator 这样的包。

所以,我们必须自己声明它的类型。

即使是 html-validator 的 documentation 导入方式与下面的方式相同。

const validator = require('html-validator');

【讨论】:

我知道@types/html-validator 包不存在。我已经提到过了。而且我知道在文档内部它与旧版本的导入一起使用。我只是想确定没有其他解决方案。【参考方案2】:

可能是其中一种对你有用:

import  validator  from "html-validator";

import  html-validator  from "html-validator";

【讨论】:

这也不好用import * as validator from "html-validator"

以上是关于带有 typescript es6 导入语法的 html-validator 模块的主要内容,如果未能解决你的问题,请参考以下文章

带有 es6 导入的 Module.exports 用于 typescript 中的 webpack.config.ts

TypeScript

导入的类不能在带有 TypeScript 的 Angular.js 中用作服务

Typescript和Node模块解析策略

带有 Ionic 2 Angular 2 和 TypeScript 的 OpenPGP

Typescript:esnext 编译器选项会破坏从外部库导入的 es6