reactjs typescript webpack proxyquire

reactjs - Proxyquire con webpack no compila



typescript (3)

He instalado proxyquire y mi archivo ajax.test.tsx contiene el siguiente código, solo 2 líneas

import * as proxyquire from ''proxyquire''; proxyquire.noCallThru();

Mi código de paquete web es el siguiente

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'' } };

Instalé proxyquire y @ types / proxyquire. Cuando ejecuto el comando webpack arroja el siguiente error

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''


En su webpack.config.js cambie la siguiente línea:

{ test: //.tsx?$/, loader: "awesome-typescript-loader" }

a:

{ test: //.tsx?$/, loader: "awesome-typescript-loader", exclude: /node_modules/ }

Eso debería arreglar tu problema.


Proxyquire está diseñado para el "sistema de módulo node.js", no para el de la carpeta web. Tienes que usar algo compatible con "frontend" - inject-loader o webpack-rewire.

Si no respetas la simplicidad de * -loaders, puedes probar rewiremock . Tiene una sintaxis similar a proxyquire y puede funcionar tanto en el entorno node.js como en el webpack.