【问题标题】:Proxyquire with webpack don't compile使用 webpack 的 Proxyquire 无法编译
【发布时间】:2017-09-05 09:20:47
【问题描述】:

我已经安装了 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'

【问题讨论】:

    标签: reactjs typescript webpack proxyquire


    【解决方案1】:

    proxyquire 与 webpack 不兼容 - https://github.com/thlorenz/proxyquire/issues/62

    问题

    Proxyquire 使用 webpack 不支持的 require.extensions。

    替代品

    【讨论】:

      【解决方案2】:

      Proxyquire 是为“node.js 模块系统”构建的,而不是 webpack 的。 你必须使用与“前端”兼容的东西——inject-loader 或 webpack-rewire。

      如果您不尊重 *-loaders 的简单性 - 您可以尝试 rewiremock。它具有类似 proxyquire 的语法,可以在 node.js 和 webpack 环境中工作。

      【讨论】:

        【解决方案3】:

        在您的 webpack.config.js 中更改以下行:

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

        到:

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

        这应该可以解决您的问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-03-25
          • 2016-08-30
          • 1970-01-01
          • 2018-03-02
          • 2017-03-14
          • 1970-01-01
          • 2019-01-25
          • 2021-09-23
          相关资源
          最近更新 更多