我在一个TypeScript项目中的一个文件(parser.js)里有一个已导出的模块,在编译阶段没有产生任何错误,但编译后的文件无法正常工作,这让我感到很困惑。
// parser.d.ts
declare module 'parser' {
interface Parser {
parser(url: string):string
}
export class UrlParser implements Parser {
parser(url: string): string {
return url.includes('https') ? url.replace('https', 'http') : '';
}
}
}
// parser.js
export default class UrlParser {
parser(url) {
return url.includes('https') ? url.replace('https', 'http') : '';
}
}
/// <reference path="../lib/parser.d.ts" />
import * as Parser from 'parser';
let urlParser = new Parser.UrlParser()
console.log(urlParser.parser('https://www.baidu.com'))
// 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'));
我执行 node ./dest/main/js 命令时遇到了一个错误。
Error: Cannot find module 'parser'