14

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

3 に答える 3

1

Proxyquire は、webpack のものではなく、「node.js モジュール システム」用に構築されています。「フロントエンド」と互換性のあるもの (inject-loader または webpack-rewire) を使用する必要があります。

*-loaders の単純さを尊重しない場合は、 rewiremock を試すことができます。proxyquire のような構文を持ち、node.js と webpack 環境の両方で動作します。

于 2017-10-22T23:37:56.803 に答える