首页 > 解决方案 > TypeScript 项目无法编译为正确的 index.js

问题描述

我正在尝试在这里构建TypeScript 项目

git clone https://github.com/simpleledger/BitcoinFilesJS.git test/
cd test
npm i
tsc # or npx tsc

index.js创建的是这样的:

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
__exportStar(require("./lib/bfp"), exports);
__exportStar(require("./lib/utils"), exports);
//# sourceMappingURL=index.js.map

但是,如果我将项目安装在带有 的新目录中npm i bitcoinfiles,则 index.js 为:

let bfp = require('./lib/bfp');
let utils = require('./lib/utils');
let network = require('./lib/network');

module.exports = {
    bfp: bfp,
    utils: utils, 
    network: network
}

什么可能导致 TypeScript 生成我不干净的 index.js?此外,它们不起作用。如您所见,不洁index.js并没有定义module.exports

标签: typescript

解决方案


我刚刚通过运行在https://github.com/simpleledger/BitcoinFilesJS/tree/0.5.0签出带有发布标记的代码成功地重新创建了 index.jsnpm run build

let bfp = require('./lib/bfp');
let utils = require('./lib/utils');
let network = require('./lib/network');

module.exports = {
    bfp: bfp,
    utils: utils, 
    network: network
}

请注意,任何 repo 的 main/master 分支都可能是正在进行的工作,并且发布的版本可能会有所不同。目前,这个 repo 的主要分支似乎针对 ES5,它的转译方式不同。

目前这只能通过手动创建目录成功构建,dist并且可能需要手动安装typescriptbrowserify我猜它只是全局安装在作者机器上,所以他们没有意识到他们缺少这些依赖项。


推荐阅读