2017-04-10 118 views
12

我已經安裝proxyquire和我ajax.test.tsx文件包含以下代碼,只需2線Proxyquire用的WebPack不編譯

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

我已經安裝了代理程序& @ 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' 

回答

0

在你webpack.config.js更改以下行:

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

到:

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

這應該可以解決您的問題。

1

Proxyquire是爲建 「Node.js的模塊系統」,不是的WebPack的一個。 你必須使用與「前端」兼容的東西 - 注入加載器或webpack-rewire。

如果您不尊重*加載程序的簡單性 - 您可以嘗試rewiremock。它具有類似proxyquire的語法,可以在node.js和webpack環境中使用。