Skip to content

Commit 35ed3fa

Browse files
njugraydead-horse
authored andcommitted
refactor(jest-support): Replace require.extensions with Module._extensions (#196)
1 parent ec8f904 commit 35ed3fa

3 files changed

Lines changed: 12 additions & 14 deletions

File tree

lib/loader/file_loader.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ class FileLoader {
122122
parse() {
123123
let files = this.options.match;
124124
if (!files) {
125-
files = (process.env.EGG_TYPESCRIPT === 'true' && utils.extensions.includes('.ts'))
125+
files = (process.env.EGG_TYPESCRIPT === 'true' && utils.extensions['.ts'])
126126
? [ '**/*.(js|ts)', '!**/*.d.ts' ]
127127
: [ '**/*.js' ];
128128
} else {

lib/utils/index.js

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,22 @@ const is = require('is-type-of');
55
const path = require('path');
66
const fs = require('fs');
77
const co = require('co');
8-
const extensions = Object.keys(require.extensions);
9-
/* istanbul ignore if */
10-
if (!extensions.length) {
11-
// adapt for jest
12-
extensions.push('.js', '.node', '.json');
13-
if (process.env.EGG_TYPESCRIPT === 'true') {
14-
extensions.push('.ts');
15-
}
16-
}
8+
const BuiltinModule = require('module');
9+
10+
// Guard against poorly mocked module constructors.
11+
const Module = module.constructor.length > 1
12+
? module.constructor
13+
/* istanbul ignore next */
14+
: BuiltinModule;
1715

1816
module.exports = {
19-
extensions,
17+
extensions: Module._extensions,
2018

2119
loadFile(filepath) {
2220
try {
2321
// if not js module, just return content buffer
2422
const extname = path.extname(filepath);
25-
if (extname && !extensions.includes(extname)) {
23+
if (extname && !Module._extensions[extname]) {
2624
return fs.readFileSync(filepath);
2725
}
2826
// require js module

test/egg-ts.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ describe('test/egg-ts.test.js', () => {
1111

1212
beforeEach(() => {
1313
require.extensions['.ts'] = require.extensions['.js'];
14-
loaderUtil.extensions.push('.ts');
14+
loaderUtil.extensions['.ts'] = require.extensions['.js'];
1515
});
1616

1717
afterEach(() => {
1818
mm.restore();
19-
loaderUtil.extensions.splice(loaderUtil.extensions.indexOf('.ts'), 1);
2019
delete require.extensions['.ts'];
20+
delete loaderUtil.extensions['.ts'];
2121
});
2222

2323
describe('load ts file', () => {

0 commit comments

Comments
 (0)