Ответ 1
proxyquire не совместим с webpack - https://github.com/thlorenz/proxyquire/issues/62
Проблема
Proxyquire использует require.extensions, который не поддерживается webpack.
Альтернативы
Я установил proxyquire, и мой файл ajax.test.tsx содержит следующий код, всего 2 строки
import * as proxyquire from 'proxyquire';
proxyquire.noCallThru();
Мой код webpack следующий
module.exports = {
entry: {
"book.service": './src/book.service.ts',
"ajax.test": './src/ajax.test.tsx'
},
output: {
filename: "[name].js",
path: __dirname + "/dist"
},
devtool: "source-map",
watch: true,
resolve: {
extensions: [".tsx", ".tsx", ".js", ".json", ".ts", '.d.ts']
},
module: {
rules: [
{ test: /\.tsx?$/, loader: "awesome-typescript-loader" },
{ enforce: "pre", test: /\.js$/, loader: "source-map-loader" }
]
},
externals: {
'react/lib/ExecutionEnvironment': true,
'react/addons': true,
'react/lib/ReactContext': 'window'
}
};
Я установил proxyquire и @types/proxyquire. Когда я запускаю команду webpack, она вызывает следующую ошибку
WARNING in ./~/proxyquire/lib/proxyquire.js
require.extensions is not supported by webpack. Use a loader instead.
@ ./~/proxyquire/index.js 3:17-44
@ ./src/ajax.test.tsx
ERROR in ./~/proxyquire/lib/proxyquire.js
Module not found: Error: Can't resolve 'module' in '***\node_modules\pr
oxyquire\lib'
proxyquire не совместим с webpack - https://github.com/thlorenz/proxyquire/issues/62
Проблема
Proxyquire использует require.extensions, который не поддерживается webpack.
Альтернативы
Proxyquire построен для "node.js module system", а не для веб-пакета. Вы должны использовать что-то совместимое с "frontend" - инъекционным загрузчиком или webpack-rewire.
Если вы не уважаете простоту * -loaders - вы можете попробовать rewiremock. Он имеет синтаксис типа proxyquire и может работать как в среде node.js, так и в webpack.
В вашем webpack.config.js измените следующую строку:
{ test: /\.tsx?$/, loader: "awesome-typescript-loader" }
в
{ test: /\.tsx?$/, loader: "awesome-typescript-loader", exclude: /node_modules/ }
Это должно решить вашу проблему.