谈谈在Tyepscript(version:2.2.2)扩展(extends)built-in类型(e.g. Array)的问题

本文探讨了在TypeScript中扩展内置类型如Array时遇到的问题,特别是在使用ES5目标库编译时。文章通过具体实例解释了为何扩展某些内置类型会失败,并提供了临时的解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前两天用typescript写代码的时候,像扩展一下内置的数据类型:Array,结果发现编译出的js文件,运行时提示找不到扩展的方法。google以后发现如下说法:

Why doesn't extending built-ins like Error, Array, and Map work?

In ES2015, constructors which return an object implicitly substitute the value of this for any callers of super(...).It is necessary for generated constructor code to capture any potential return value of super(...) and replace it with this.

As a result, subclassing Error, Array, and others may no longer work as expected.This is due to the fact that constructor functions for Error, Array, and the like use ECMAScript 6's new.target to adjust the prototype chain;however, there is no way to ensure a value for new.target when invoking a constructor in ECMAScript 5.Other downlevel compilers generally have the same limitation by default.

下面给大家 一个实例和详细的解释,分享一下心得。

问题起因:

在TypeScript中,extends built-in type, 并且使用ES5库(target:ES5)进行编译。


实例:

TS代码:

class NewArray<T> extends Array<T>{
getFirst() {
return 'NewArray';
}
}
var newAry = new NewArray<string>();
console.log(newAry.getFirst()); // here will error out of undefined method

编译后的JS代码:

var NewArray = (function (_super) {
__extends(NewArray, _super);
function NewArray() {
// this will return the Array instead of this(NewArray) which means "this" is substituted
return _super !== null && _super.apply(this, arguments) || this;
}
NewArray.prototype.getFirst = function () {
return 'NewArray';
};
return NewArray;
}(Array));

大家可以留意一下, built-in的数据类型,在调用apply方法时,会返回自身的数据类型,导致子类(NewArray)的构造函数返回的是Array,而不是NewArray,以至于在实例化NewArray时,它的__proto__是Array的prototype而不是NewArray的prototype,所以导致NewArray的实例,并没有包涵NewArray prototype里定义的方法(i.e. getFirst)。

但是在自定义类的扩展没有问题,大家可以调试看看,因为自动的类,最终可以保证构造函数返回的this,没有被降级。


解决方法:

目前没有找到太好的解决方案,只能等TypeScript下一个版本可以解决这个问题。目前在使用ES5库的时候,先不要extends built-in的类型了。如果大家找到什么好的方法,请回复我哦。


清华镜像的mongoDB el7下面有这些文件:mongodb-atlas-1.11.0.x86_64.rpm 2.0 KiB 2024-02-03 02:36 mongodb-atlas-1.12.0.x86_64.rpm 2.0 KiB 2024-02-03 02:36 mongodb-atlas-1.12.1.x86_64.rpm 2.0 KiB 2024-02-03 02:36 mongodb-atlas-1.12.2.x86_64.rpm 2.0 KiB 2024-02-03 02:36 mongodb-atlas-1.13.0.x86_64.rpm 2.0 KiB 2024-02-03 02:36 mongodb-atlas-1.14.0.x86_64.rpm 2.0 KiB 2024-02-03 02:36 mongodb-atlas-1.14.1.x86_64.rpm 2.0 KiB 2024-02-03 02:36 mongodb-atlas-1.14.2.x86_64.rpm 2.0 KiB 2024-02-03 02:36 mongodb-atlas-1.14.3.x86_64.rpm 2.0 KiB 2024-02-09 05:07 mongodb-atlas-1.15.0.x86_64.rpm 2.0 KiB 2024-02-23 08:22 mongodb-atlas-1.15.1.x86_64.rpm 2.0 KiB 2024-03-01 09:58 mongodb-atlas-1.16.0.x86_64.rpm 2.0 KiB 2024-03-08 11:36 mongodb-atlas-1.17.0.x86_64.rpm 2.0 KiB 2024-03-15 13:04 mongodb-atlas-1.18.0.x86_64.rpm 2.0 KiB 2024-03-28 16:47 mongodb-atlas-1.19.0.x86_64.rpm 2.0 KiB 2024-04-03 18:14 mongodb-atlas-1.20.0.x86_64.rpm 2.0 KiB 2024-04-12 21:00 mongodb-atlas-1.21.0.x86_64.rpm 2.0 KiB 2024-04-27 00:44 mongodb-atlas-1.22.0.x86_64.rpm 2.0 KiB 2024-05-02 01:54 mongodb-atlas-1.23.0.x86_64.rpm 2.0 KiB 2024-05-24 21:02 mongodb-atlas-1.24.0.x86_64.rpm 2.0 KiB 2024-06-21 03:40 mongodb-atlas-cli-1.11.0.x86_64.rpm 19.1 MiB 2024-02-03 02:36 mongodb-atlas-cli-1.12.0.x86_64.rpm 19.2 MiB 2024-02-03 02:36 mongodb-atlas-cli-1.12.1.x86_64.rpm 19.2 MiB 2024-02-03 02:36 mongodb-atlas-cli-1.12.2.x86_64.rpm 19.2 MiB 2024-02-03 02:36 mongodb-atlas-cli-1.13.0.x86_64.rpm 19.2 MiB 2024-02-03 02:36 mongodb-atlas-cli-1.14.0.x86_64.rpm 19.2 MiB 2024-02-03 02:36 mongodb-atlas-cli-1.14.1.x86_64.rpm 19.6 MiB 2024-02-03 02:36 mongodb-atlas-cli-1.14.2.x86_64.rpm 19.6 MiB 2024-02-03 02:36 mongodb-atlas-cli-1.14.3.x86_64.rpm 19.1 MiB 2024-02-09 05:07 mongodb-atlas-cli-1.15.0.x86_64.rpm 19.2 MiB 2024-02-23 08:22 mongodb-atlas-cli-1.15.1.x86_64.rpm 19.2 MiB 2024-03-01 09:58 mongodb-atlas-cli-1.16.0.x86_64.rpm 19.0 MiB 2024-03-08 11:36 mongodb-atlas-cli-1.17.0.x86_64.rpm 19.2 MiB 2024-03-15 13:04 mongodb-atlas-cli-1.18.0.x86_64.rpm 19.0 MiB 2024-03-28 16:48 mongodb-atlas-cli-1.19.0.x86_64.rpm 19.0 MiB 2024-04-03 18:14 mongodb-atlas-cli-1.20.0.x86_64.rpm 19.0 MiB 2024-04-12 21:00 mongodb-atlas-cli-1.21.0.x86_64.rpm 19.2 MiB 2024-04-27 00:44 mongodb-atlas-cli-1.22.0.x86_64.rpm 19.2 MiB 2024-05-02 01:54 mongodb-atlas-cli-1.23.0.x86_64.rpm 19.2 MiB 2024-05-24 21:02 mongodb-atlas-cli-1.24.0.x86_64.rpm 19.2 MiB 2024-06-21 03:40 mongodb-cli-1.31.1.x86_64.rpm 10.9 MiB 2024-02-03 02:36 mongodb-cli-1.31.3.x86_64.rpm 10.8 MiB 2024-02-09 05:07 mongodb-cli-2.0.0.x86_64.rpm 5.6 MiB 2024-03-15 13:04 mongodb-database-tools-100.8.0.x86_64.rpm 51.2 MiB 2024-02-03 02:36 mongodb-database-tools-100.9.0.x86_64.rpm 52.4 MiB 2024-02-03 02:36 mongodb-database-tools-100.9.1.x86_64.rpm 52.4 MiB 2024-02-03 02:36 mongodb-database-tools-100.9.2.x86_64.rpm 52.4 MiB 2024-02-03 02:36 mongodb-database-tools-100.9.3.x86_64.rpm 52.4 MiB 2024-02-03 02:36 mongodb-database-tools-100.9.4.x86_64.rpm 52.4 MiB 2024-02-03 02:36 mongodb-database-tools-100.9.5-1.x86_64.rpm 53.6 MiB 2024-06-18 02:53 mongodb-mongosh-1.10.0.x86_64.rpm 43.5 MiB 2024-02-03 02:37 mongodb-mongosh-1.10.1.x86_64.rpm 43.5 MiB 2024-02-03 02:37 mongodb-mongosh-1.10.2.x86_64.rpm 43.5 MiB 2024-02-03 02:37 mongodb-mongosh-1.10.3.x86_64.rpm 43.5 MiB 2024-02-03 02:37 mongodb-mongosh-1.10.4.x86_64.rpm 43.5 MiB 2024-02-03 02:37 mongodb-mongosh-1.10.5.x86_64.rpm 43.5 MiB 2024-02-03 02:37 mongodb-mongosh-1.10.6.x86_64.rpm 46.4 MiB 2024-02-03 02:37 mongodb-mongosh-1.9.0.x86_64.rpm 43.4 MiB 2024-02-03 02:37 mongodb-mongosh-1.9.1.x86_64.rpm 43.4 MiB 2024-02-03 02:37 mongodb-mongosh-2.0.0.x86_64.rpm 49.2 MiB 2024-02-03 02:37 mongodb-mongosh-2.0.1.x86_64.rpm 49.2 MiB 2024-02-03 02:37 mongodb-mongosh-2.0.2.x86_64.rpm 49.9 MiB 2024-02-03 02:37 mongodb-mongosh-2.1.0.x86_64.rpm 49.9 MiB 2024-02-03 02:37 mongodb-mongosh-2.1.1.x86_64.rpm 49.9 MiB 2024-02-03 02:37 mongodb-mongosh-2.1.3.x86_64.rpm 50.6 MiB 2024-02-03 02:37 mongodb-mongosh-2.1.4.x86_64.rpm 50.6 MiB 2024-02-09 05:07 mongodb-mongosh-2.1.5.x86_64.rpm 50.6 MiB 2024-02-20 07:35 mongodb-mongosh-2.2.0.x86_64.rpm 53.8 MiB 2024-03-15 13:04 mongodb-mongosh-2.2.1.x86_64.rpm 53.8 MiB 2024-03-20 14:32 mongodb-mongosh-2.2.10.x86_64.rpm 55.8 MiB 2024-06-25 04:37 mongodb-mongosh-2.2.2.x86_64.rpm 54.3 MiB 2024-03-27 16:20 mongodb-mongosh-2.2.3.x86_64.rpm 54.6 MiB 2024-04-04 18:31 mongodb-mongosh-2.2.4.x86_64.rpm 54.6 MiB 2024-04-16 22:01 mongodb-mongosh-2.2.5.x86_64.rpm 55.1 MiB 2024-04-25 00:05 mongodb-mongosh-2.2.6.x86_64.rpm 55.8 MiB 2024-05-17 19:15 mongodb-mongosh-2.2.9.x86_64.rpm 55.8 MiB 2024-06-15 02:00 mongodb-mongosh-shared-openssl11-1.10.0.x86_64.rpm 42.0 MiB 2024-02-03 02:37 mongodb-mongosh-shared-openssl11-1.10.1.x86_64.rpm 42.0 MiB 2024-02-03 02:37 mongodb-mongosh-shared-openssl11-1.10.2.x86_64.rpm 42.0 MiB 2024-02-03 02:37 mongodb-mongosh-shared-openssl11-1.10.3.x86_64.rpm 42.0 MiB 2024-02-03 02:37 mongodb-mongosh-shared-openssl11-1.10.4.x86_64.rpm 42.0 MiB 2024-02-03 02:37 mongodb-mongosh-shared-openssl11-1.10.5.x86_64.rpm 42.0 MiB 2024-02-03 02:37 mongodb-mongosh-shared-openssl11-1.10.6.x86_64.rpm 44.9 MiB 2024-02-03 02:37 mongodb-mongosh-shared-openssl11-1.9.0.x86_64.rpm 41.9 MiB 2024-02-03 02:37 mongodb-mongosh-shared-openssl11-1.9.1.x86_64.rpm 41.9 MiB 2024-02-03 02:38 mongodb-mongosh-shared-openssl11-2.0.0.x86_64.rpm 46.9 MiB 2024-02-03 02:38 mongodb-mongosh-shared-openssl11-2.0.1.x86_64.rpm 46.9 MiB 2024-02-03 02:38 mongodb-mongosh-shared-openssl11-2.0.2.x86_64.rpm 47.6 MiB 2024-02-03 02:38 mongodb-mongosh-shared-openssl11-2.1.0.x86_64.rpm 47.7 MiB 2024-02-03 02:38 mongodb-mongosh-shared-openssl11-2.1.1.x86_64.rpm 47.7 MiB 2024-02-03 02:38 mongodb-mongosh-shared-openssl11-2.1.3.x86_64.rpm 48.3 MiB 2024-02-03 02:38 mongodb-mongosh-shared-openssl11-2.1.4.x86_64.rpm 48.3 MiB 2024-02-09 05:07 mongodb-mongosh-shared-openssl11-2.1.5.x86_64.rpm 48.4 MiB 2024-02-20 07:35 mongodb-mongosh-shared-openssl11-2.2.0.x86_64.rpm 51.5 MiB 2024-03-15 13:04 mongodb-mongosh-shared-openssl11-2.2.1.x86_64.rpm 51.5 MiB 2024-03-20 14:32 mongodb-mongosh-shared-openssl11-2.2.10.x86_64.rpm 53.5 MiB 2024-06-25 04:37 mongodb-mongosh-shared-openssl11-2.2.2.x86_64.rpm 52.0 MiB 2024-03-27 16:20 mongodb-mongosh-shared-openssl11-2.2.3.x86_64.rpm 52.3 MiB 2024-04-04 18:31 mongodb-mongosh-shared-openssl11-2.2.4.x86_64.rpm 52.4 MiB 2024-04-16 22:01 mongodb-mongosh-shared-openssl11-2.2.5.x86_64.rpm 52.9 MiB 2024-04-26 00:31 mongodb-mongosh-shared-openssl11-2.2.6.x86_64.rpm 53.5 MiB 2024-05-17 19:15 mongodb-mongosh-shared-openssl11-2.2.9.x86_64.rpm 53.5 MiB 2024-06-15 02:00 mongodb-mongosh-shared-openssl3-1.10.0.x86_64.rpm 42.0 MiB 2024-02-03 02:38 mongodb-mongosh-shared-openssl3-1.10.1.x86_64.rpm 42.0 MiB 2024-02-03 02:38 mongodb-mongosh-shared-openssl3-1.10.2.x86_64.rpm 42.0 MiB 2024-02-03 02:38 mongodb-mongosh-shared-openssl3-1.10.3.x86_64.rpm 42.0 MiB 2024-02-03 02:38 mongodb-mongosh-shared-openssl3-1.10.4.x86_64.rpm 42.0 MiB 2024-02-03 02:38 mongodb-mongosh-shared-openssl3-1.10.5.x86_64.rpm 42.0 MiB 2024-02-03 02:38 mongodb-mongosh-shared-openssl3-1.10.6.x86_64.rpm 44.9 MiB 2024-02-03 02:38 mongodb-mongosh-shared-openssl3-1.9.0.x86_64.rpm 41.9 MiB 2024-02-03 02:38 mongodb-mongosh-shared-openssl3-1.9.1.x86_64.rpm 41.9 MiB 2024-02-03 02:38 mongodb-mongosh-shared-openssl3-2.0.0.x86_64.rpm 46.9 MiB 2024-02-03 02:38 mongodb-mongosh-shared-openssl3-2.0.1.x86_64.rpm 46.9 MiB 2024-02-03 02:38 mongodb-mongosh-shared-openssl3-2.0.2.x86_64.rpm 47.7 MiB 2024-02-03 02:38 mongodb-mongosh-shared-openssl3-2.1.0.x86_64.rpm 47.7 MiB 2024-02-03 02:39 mongodb-mongosh-shared-openssl3-2.1.1.x86_64.rpm 47.7 MiB 2024-02-03 02:39 mongodb-mongosh-shared-openssl3-2.1.3.x86_64.rpm 48.4 MiB 2024-02-03 02:39 mongodb-mongosh-shared-openssl3-2.1.4.x86_64.rpm 48.4 MiB 2024-02-09 05:07 mongodb-mongosh-shared-openssl3-2.1.5.x86_64.rpm 48.4 MiB 2024-02-20 07:35 mongodb-mongosh-shared-openssl3-2.2.0.x86_64.rpm 51.5 MiB 2024-03-15 13:04 mongodb-mongosh-shared-openssl3-2.2.1.x86_64.rpm 51.5 MiB 2024-03-20 14:32 mongodb-mongosh-shared-openssl3-2.2.10.x86_64.rpm 53.6 MiB 2024-06-25 04:37 mongodb-mongosh-shared-openssl3-2.2.2.x86_64.rpm 52.0 MiB 2024-03-27 16:20 mongodb-mongosh-shared-openssl3-2.2.3.x86_64.rpm 52.3 MiB 2024-04-04 18:31 mongodb-mongosh-shared-openssl3-2.2.4.x86_64.rpm 52.4 MiB 2024-04-16 22:01 mongodb-mongosh-shared-openssl3-2.2.5.x86_64.rpm 52.9 MiB 2024-04-26 00:31 mongodb-mongosh-shared-openssl3-2.2.6.x86_64.rpm 53.5 MiB 2024-05-17 19:15 mongodb-mongosh-shared-openssl3-2.2.9.x86_64.rpm 53.6 MiB 2024-06-15 02:00 mongodb-org-7.0.0-1.el7.x86_64.rpm 6.2 KiB 2024-02-03 02:39 mongodb-org-7.0.1-1.el7.x86_64.rpm 6.2 KiB 2024-02-03 02:39 mongodb-org-7.0.11-1.el7.x86_64.rpm 6.2 KiB 2024-05-24 21:02 mongodb-org-7.0.12-1.el7.x86_64.rpm 6.2 KiB 2024-06-29 05:41 mongodb-org-7.0.2-1.el7.x86_64.rpm 6.2 KiB 2024-02-03 02:39 mongodb-org-7.0.3-1.el7.x86_64.rpm 6.2 KiB 2024-02-03 02:39 mongodb-org-7.0.4-1.el7.x86_64.rpm 6.2 KiB 2024-02-03 02:39 mongodb-org-7.0.5-1.el7.x86_64.rpm 6.2 KiB 2024-02-03 02:39 mongodb-org-7.0.6-1.el7.x86_64.rpm 6.2 KiB 2024-02-29 09:38 mongodb-org-7.0.7-1.el7.x86_64.rpm 6.2 KiB 2024-03-19 14:15 mongodb-org-7.0.8-1.el7.x86_64.rpm 6.2 KiB 2024-04-04 18:31 mongodb-org-7.0.9-1.el7.x86_64.rpm 6.2 KiB 2024-04-28 00:59 mongodb-org-database-7.0.0-1.el7.x86_64.rpm 6.3 KiB 2024-02-03 02:39 mongodb-org-database-7.0.1-1.el7.x86_64.rpm 6.3 KiB 2024-02-03 02:39 mongodb-org-database-7.0.11-1.el7.x86_64.rpm 6.3 KiB 2024-05-24 21:02 mongodb-org-database-7.0.12-1.el7.x86_64.rpm 6.3 KiB 2024-06-29 05:41 mongodb-org-database-7.0.2-1.el7.x86_64.rpm 6.3 KiB 2024-02-03 02:39 mongodb-org-database-7.0.3-1.el7.x86_64.rpm 6.3 KiB 2024-02-03 02:39 mongodb-org-database-7.0.4-1.el7.x86_64.rpm 6.3 KiB 2024-02-03 02:39 mongodb-org-database-7.0.5-1.el7.x86_64.rpm 6.3 KiB 2024-02-03 02:39 mongodb-org-database-7.0.6-1.el7.x86_64.rpm 6.3 KiB 2024-02-29 09:38 mongodb-org-database-7.0.7-1.el7.x86_64.rpm 6.3 KiB 2024-03-19 14:15 mongodb-org-database-7.0.8-1.el7.x86_64.rpm 6.3 KiB 2024-04-04 18:31 mongodb-org-database-7.0.9-1.el7.x86_64.rpm 6.3 KiB 2024-04-28 00:59 mongodb-org-database-tools-extra-7.0.0-1.el7.x86_64.rpm 11.5 KiB 2024-02-03 02:39 mongodb-org-database-tools-extra-7.0.1-1.el7.x86_64.rpm 11.5 KiB 2024-02-03 02:39 mongodb-org-database-tools-extra-7.0.11-1.el7.x86_64.rpm 11.5 KiB 2024-05-24 21:02 mongodb-org-database-tools-extra-7.0.12-1.el7.x86_64.rpm 11.5 KiB 2024-06-29 05:41 mongodb-org-database-tools-extra-7.0.2-1.el7.x86_64.rpm 11.5 KiB 2024-02-03 02:39 mongodb-org-database-tools-extra-7.0.3-1.el7.x86_64.rpm 11.5 KiB 2024-02-03 02:39 mongodb-org-database-tools-extra-7.0.4-1.el7.x86_64.rpm 11.5 KiB 2024-02-03 02:39 mongodb-org-database-tools-extra-7.0.5-1.el7.x86_64.rpm 11.5 KiB 2024-02-03 02:39 mongodb-org-database-tools-extra-7.0.6-1.el7.x86_64.rpm 11.5 KiB 2024-02-29 09:38 mongodb-org-database-tools-extra-7.0.7-1.el7.x86_64.rpm 11.5 KiB 2024-03-19 14:15 mongodb-org-database-tools-extra-7.0.8-1.el7.x86_64.rpm 11.5 KiB 2024-04-04 18:31 mongodb-org-database-tools-extra-7.0.9-1.el7.x86_64.rpm 11.5 KiB 2024-04-28 00:59 mongodb-org-mongos-7.0.0-1.el7.x86_64.rpm 24.8 MiB 2024-02-03 02:39 mongodb-org-mongos-7.0.1-1.el7.x86_64.rpm 24.9 MiB 2024-02-03 02:39 mongodb-org-mongos-7.0.11-1.el7.x86_64.rpm 25.1 MiB 2024-05-24 21:02 mongodb-org-mongos-7.0.12-1.el7.x86_64.rpm 24.8 MiB 2024-06-29 05:41 mongodb-org-mongos-7.0.2-1.el7.x86_64.rpm 24.9 MiB 2024-02-03 02:39 mongodb-org-mongos-7.0.3-1.el7.x86_64.rpm 24.9 MiB 2024-02-03 02:39 mongodb-org-mongos-7.0.4-1.el7.x86_64.rpm 24.9 MiB 2024-02-03 02:39 mongodb-org-mongos-7.0.5-1.el7.x86_64.rpm 24.9 MiB 2024-02-03 02:39 mongodb-org-mongos-7.0.6-1.el7.x86_64.rpm 25.0 MiB 2024-02-29 09:38 mongodb-org-mongos-7.0.7-1.el7.x86_64.rpm 25.1 MiB 2024-03-19 14:15 mongodb-org-mongos-7.0.8-1.el7.x86_64.rpm 25.1 MiB 2024-04-04 18:31 mongodb-org-mongos-7.0.9-1.el7.x86_64.rpm 25.1 MiB 2024-04-28 00:59 mongodb-org-server-7.0.0-1.el7.x86_64.rpm 36.2 MiB 2024-02-03 02:39 mongodb-org-server-7.0.1-1.el7.x86_64.rpm 36.2 MiB 2024-02-03 02:39 mongodb-org-server-7.0.11-1.el7.x86_64.rpm 36.5 MiB 2024-05-24 21:02 mongodb-org-server-7.0.12-1.el7.x86_64.rpm 36.2 MiB 2024-06-29 05:41 mongodb-org-server-7.0.2-1.el7.x86_64.rpm 36.2 MiB 2024-02-03 02:39 mongodb-org-server-7.0.3-1.el7.x86_64.rpm 36.2 MiB 2024-02-03 02:39 mongodb-org-server-7.0.4-1.el7.x86_64.rpm 36.2 MiB 2024-02-03 02:39 mongodb-org-server-7.0.5-1.el7.x86_64.rpm 36.2 MiB 2024-02-03 02:39 mongodb-org-server-7.0.6-1.el7.x86_64.rpm 36.4 MiB 2024-02-29 09:38 mongodb-org-server-7.0.7-1.el7.x86_64.rpm 36.4 MiB 2024-03-19 14:15 mongodb-org-server-7.0.8-1.el7.x86_64.rpm 36.4 MiB 2024-04-04 18:31 mongodb-org-server-7.0.9-1.el7.x86_64.rpm 36.4 MiB 2024-04-28 00:59 mongodb-org-tools-7.0.0-1.el7.x86_64.rpm 6.2 KiB 2024-02-03 02:39 mongodb-org-tools-7.0.1-1.el7.x86_64.rpm 6.2 KiB 2024-02-03 02:39 mongodb-org-tools-7.0.11-1.el7.x86_64.rpm 6.2 KiB 2024-05-24 21:02 mongodb-org-tools-7.0.12-1.el7.x86_64.rpm 6.2 KiB 2024-06-29 05:41 mongodb-org-tools-7.0.2-1.el7.x86_64.rpm 6.2 KiB 2024-02-03 02:39 mongodb-org-tools-7.0.3-1.el7.x86_64.rpm 6.2 KiB 2024-02-03 02:39 mongodb-org-tools-7.0.4-1.el7.x86_64.rpm 6.2 KiB 2024-02-03 02:39 mongodb-org-tools-7.0.5-1.el7.x86_64.rpm 6.2 KiB 2024-02-03 02:39 mongodb-org-tools-7.0.6-1.el7.x86_64.rpm 6.2 KiB 2024-02-29 09:38 mongodb-org-tools-7.0.7-1.el7.x86_64.rpm 6.2 KiB 2024-03-19 14:15 mongodb-org-tools-7.0.8-1.el7.x86_64.rpm 6.2 KiB 2024-04-04 18:31 mongodb-org-tools-7.0.9-1.el7.x86_64.rpm 6.2 KiB 2024-04-28 00:59涉及版本很多,我应该如何选择下载,确保完整性
最新发布
06-28
<think>我们正在处理关于如何从清华镜像站下载正确且完整的MongoDBRPM包的问题。根据引用[2],用户已经知道清华镜像站的URL,但需要指导如何选择正确的包。引用[2]中提供了MongoDB6.0的yum源配置,但用户可能想下载特定版本的RPM包(例如4.4.14)或者最新版本。步骤:1.确定需要的MongoDB版本(例如4.4,5.0,6.0等)和操作系统版本(el7表示CentOS/RHEL7,el8或el9分别对应8和9)。2.访问清华镜像站对应目录:https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/在目录中,我们会看到不同版本的目录,如:el7-4.4/(CentOS7安装MongoDB4.4)el7-5.0/(CentOS7安装 MongoDB5.0)el7-6.0/(CentOS7安装MongoDB6.0)el8-6.0/(CentOS8安装 MongoDB6.0)...等等3.进入对应版本目录,例如我们需要在CentOS7上安装MongoDB6.0,则进入el7-6.0/。4.在目录中,我们会看到多个架构的目录(x86_64,aarch64等),通常我们使用x86_64。5.进入x86_64目录后,会看到很多RPM包。我们需要下载哪些包?根据MongoDB官方安装文档,一个完整的MongoDB社区版安装通常包括以下包:- mongodb-org-server:包含mongod守护进程和相关的配置和初始化脚本。- mongodb-org-mongos:包含mongos守护进程。-mongodb-org-shell:包含mongoshell。-mongodb-org-tools:包含MongoDB的工具(如mongodump,mongorestore等)。此外,还有一个元包mongodb-org,它依赖以上四个包,安装它就会自动安装所有组件。因此,如果我们想通过rpm命令手动安装(而不是配置yum源后用yum安装),我们需要下载以下包(以6.0版本为例):mongodb-org-6.0.0-1.el7.x86_64.rpm#元包(可选,因为它会依赖其他包,但如果我们手动安装,可以只安装其他四个包)mongodb-org-server-6.0.0-1.el7.x86_64.rpmmongodb-org-mongos-6.0.0-1.el7.x86_64.rpmmongodb-org-shell-6.0.0-1.el7.x86_64.rpmmongodb-org-tools-6.0.0-1.el7.x86_64.rpm注意:版本号(6.0.0-1)可能会更新,因此应该选择最新的版本(根据文件修改时间判断,或者查看目录中最高版本号)。6.但是,我们还需要注意依赖关系。手动安装时,可能会遇到依赖问题。因此,推荐使用yum安装,只需配置好repo文件,然后执行:sudo yum install-ymongodb-org7.如果因为网络原因无法使用yum在线安装,而需要离线下载所有包,我们可以使用yum的downloadonly插件(如引用[5]所示)来下载所有依赖包。操作步骤(在能联网的机器上):a.配置清华镜像的repo文件(如引用[2]所示,但注意版本和系统版本)。b.运行:yuminstall -y mongodb-org --downloadonly--downloaddir=./mongodb-packagesc.将mongodb-packages目录下的所有rpm包复制到目标机器,然后使用yumlocalinstall或rpm安装。8.如果无法使用yum,必须手动下载,则除了上述五个包,还需要注意系统依赖。例如,MongoDB可能依赖openssl、libcurl等。这些依赖在CentOS7基本系统中通常已安装,但版本可能不够。因此,手动安装风险较大,推荐使用yum下载所有依赖。因此,总结回答:-推荐使用yum安装,配置好清华镜像的repo文件后直接安装。-离线安装时,使用yum的downloadonly插件下载完整依赖。-如果必须手动下载,则下载上述5个包(注意版本号一致),并在目标机器上按顺序安装(先安装依赖的包,如server和shell,再安装其他)。但可能仍会遇到依赖问题,需要自行解决。下面我们给出具体步骤:</think>### 如何正确选择清华镜像中的 MongoDB RPM 包(EL7 系统) #### 1. **确定核心组件包** 在清华镜像站中,完整的 MongoDB 安装需要以下 5 个核心 RPM 包(以 6.0 版本为例): ```bash # 必须下载的组件包 mongodb-org-server-6.0*.rpm # 主服务程序 mongodb-org-mongos-6.0*.rpm # 分片路由守护进程 mongodb-org-shell-6.0*.rpm # 交互式 Shell mongodb-org-tools-6.0*.rpm # 专业工具集 mongodb-org-6.0*.rpm # 元数据包(自动关联依赖) ``` > **注意**: > - 所有包的版本号必须**完全一致**(如全部使用 6.0.15-1.el7) > - 文件名中的通配符 `*` 需替换为具体版本号(如 `6.0.15-1.el7.x86_64`) #### 2. **镜像目录结构解析** 清华镜像站路径:`https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el7-6.0/x86_64/` 关键目录说明: ``` RPMS/ ├── mongodb-org-6.0.15-1.el7.x86_64.rpm # 元包 ├── mongodb-org-mongos-6.0.15-1.el7.x86_64.rpm # 分片组件 ├── mongodb-org-server-6.0.15-1.el7.x86_64.rpm # 核心服务 ├── mongodb-org-shell-6.0.15-1.el7.x86_64.rpm # Shell工具 ├── mongodb-org-tools-6.0.15-1.el7.x86_64.rpm # 专业工具 └── repodata/ # 依赖关系元数据 ``` #### 3. **完整下载流程 ```bash # 步骤1:进入镜像目录 wget https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el7-6.0/x86_64/RPMS/ # 步骤2:下载全部核心组件(示例版本6.0.15) wget https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el7-6.0/x86_64/RPMS/mongodb-org-6.0.15-1.el7.x86_64.rpm wget https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el7-6.0/x86_64/RPMS/mongodb-org-server-6.0.15-1.el7.x86_64.rpm wget https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el7-6.0/x86_64/RPMS/mongodb-org-mongos-6.0.15-1.el7.x86_64.rpm wget https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el7-6.0/x86_64/RPMS/mongodb-org-shell-6.0.15-1.el7.x86_64.rpm wget https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el7-6.0/x86_64/RPMS/mongodb-org-tools-6.0.15-1.el7.x86_64.rpm # 步骤3:验证完整性 rpm -K *.rpm # 检查所有包的GPG签名 ``` #### 4. **依赖解决方案** 若遇到依赖错误(如引用[4]问题): ```bash # 方法1:通过yum自动解决 sudo yum localinstall mongodb-org-*.rpm # 方法2:手动下载依赖(示例) wget https://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/openssl-libs-1.0.2k-26.el7_9.x86_64.rpm ``` #### 5. **版本选择建议 | 版本类型 | 适用场景 | 镜像路径 | |---------|----------|----------| | **6.0** | 生产环境 | `/el7-6.0/` | | **5.0** | 兼容旧应用 | `/el7-5.0/` | | **4.4** | 遗留系统 | `/el7-4.4/` | > **关键原则**: > - 生产环境选择**长期支持版本**(如6.0 LTS)[^2] > - 所有组件包必须来自**同一子目录**(如全部从`/el7-6.0/`下载) > - 避免混合不同镜像源的包(如阿里云+清华源) #### 6. 最佳实践 ```bash # 推荐使用yum源安装(避免手动解决依赖) echo "[mongodb-org-6.0] name=MongoDB Repository baseurl=https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el7-6.0/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc" | sudo tee /etc/yum.repos.d/mongodb.repo sudo yum install -y mongodb-org # 自动安装完整组件[^2] ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值