我在Typescript项目的一个文件(parser.js)中有一个导出的模块,在编译阶段我没有产生任何错误,但是编译后的文件无法工作,这让我感到困惑
yarn add node-sass
// 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'))
执行节点./dest/main/js命令时出现错误。
// 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'));
答案 0 :(得分:0)
您应该在该import语句中使用相对路径(例如'./dest/lib/parser'
),因为默认情况下,如果没有传递路径,require
将在node_modules
中查找(如TypeScript可以被告知'parser'
在哪里)。
您还可以将package.json
文件添加到与parser.js
相同的文件夹中,其中包含内容{ name: 'parser' }
,这样可以通过require('parser')
找到该文件