Typescript编译文件找不到模块

Typescript编译文件找不到模块,typescript,Typescript,我在Typescript项目的一个文件(parser.js)中有一个导出的模块,在编译阶段我没有生成任何错误,但编译后的文件无法工作,这让我感到困惑 //parser.d.ts 声明模块“解析器”{ 接口解析器{ 解析器(url:string):string } 导出类UrlParser实现解析器{ 解析器(url:string):string{ 返回url.includes('https')?url.replace('https','http'):''; } } } // 从“解析器”导入*

我在Typescript项目的一个文件(parser.js)中有一个导出的模块,在编译阶段我没有生成任何错误,但编译后的文件无法工作,这让我感到困惑

//parser.d.ts
声明模块“解析器”{
接口解析器{
解析器(url:string):string
}
导出类UrlParser实现解析器{
解析器(url:string):string{
返回url.includes('https')?url.replace('https','http'):'';
}
}
}
//
从“解析器”导入*作为解析器;
让urlParser=new Parser.urlParser()
console.log(urlParser.parser('https://www.baidu.com'))

您应该在该导入语句中使用相对路径(例如,
'./dest/lib/parser'
),因为默认情况下,
require
将在未传递路径的情况下查看
节点模块
(其中as-TypeScript可以告诉
'parser'
在哪里)


您还可以将一个
package.json
文件添加到与
parser.js
相同的文件夹中,该文件的内容为
{name:'parser'}
,这样就可以通过
require('parser')

找到它。您可以分享生成parser.js的方式吗?或者关于ts文件的package.json?谢谢你的回答,我想用type system在typescript项目中导入javascript文件。我该怎么办?我引用了,我理解错了吗?我不可能说你是否理解错了,我必须看看你的整个项目是如何组织的,你的tsconfig是什么样子。你不应该导入声明文件,你应该导入真正的模块。将
import*作为解析器从'Parser'
更改为
import Parser from./path/to/Parser'并且导入不会失败。
// parser.js
export default class UrlParser {
    parser(url)  {
        return  url.includes('https') ? url.replace('https', 'http') : '';
    }
}
// compiled file I got
"use strict";
var __importStar = (this && this.__importStar) || function (mod) {
    if (mod && mod.__esModule) return mod;
    var result = {};
    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
    result["default"] = mod;
    return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
/// <reference path="../lib/parser.d.ts" />
var Parser = __importStar(require("parser"));
var urlParser = new Parser.UrlParser();
console.log(urlParser.parser('https://www.baidu.com'));

Error: Cannot find module 'parser'