【问题标题】:webpack ts-loader error : loaderContext.getOptions is not a functionwebpack ts-loader 错误:loaderContext.getOptions 不是函数
【发布时间】:2021-12-22 22:23:46
【问题描述】:

我正在尝试将我的打字稿文件导入webpack,当我在终端中运行tsc 时一切正常,但是当我尝试在ts-loader 中使用编译我的打字稿代码时,会显示这个奇怪的错误:

ERROR in ./src/Main.ts
Module build failed (from ./node_modules/ts-loader/index.js):
TypeError: loaderContext.getOptions is not a function
    at getLoaderOptions (D:\Projects\Real\AviUI\node_modules\ts-loader\dist\index.js:91:41)
    at Object.loader (D:\Projects\Real\AviUI\node_modules\ts-loader\dist\index.js:14:21)

webpack 版本:4.43.0,ts-loader 版本:^9.2.3,loader-utils 版本:^1.4.0

webpack.config.js 文件:

module.exports = {
    entry: path.resolve(__dirname, './src/main.ts'),
    module: {
        rules: [ 
        {
            test: /\.ts$/,
            include: [source_path],
            loader: 'ts-loader',
            exclude: /node_modules/, 
        }],
    },
    resolve: {
        extensions: ['.tsx', '.ts', '.js']
    },
    output: {
        filename: 'avi_ui.js',
        path: path.resolve(__dirname, 'dist')
    },
    externals: {
        'jquery': '`jquery`',
        'angular' : '`angular`'
    },
    mode: 'development'
};

注意:我尝试将我的 typescript 编译器更新到最新版本(当前最新版本是:4.3.3),但它对我不起作用。

【问题讨论】:

    标签: javascript typescript webpack


    【解决方案1】:

    正如 Ali Bigdeli 的回答所指出的,除了将 webpack 升级到 webpack 5 之外,还有另一种方法可以解决这个问题。您也可以将 ts-loader 降级到 8.2.0。使用您选择的包管理器,可能如下所示:

    npm install ts-loader@~8.2.0
    

    正如Github question 中指出的那样 由 Ali Bigdeli 链接,ts-loader 支持 webpack 4 的最后一个版本是 8.2.0,如果你想收到这个版本的补丁,你可以依赖 semver ~8.2.0 版本。

    【讨论】:

    • 我想降级 ts-loader 比升级 webpack 更容易
    • 谢谢!这是我需要的神奇版本号!我一直在查看 peerDependencies,它说 webpack * 一直到 9.2.1。就我而言,升级到 webpack 5 会大大增加我的工作范围,因为它会影响其他东西,比如我希望以后升级的 react-scripts 和 jest。
    • 非常感谢@MikeMike,这帮我节省了很多时间。版本8.3.0 也可以解决这个问题。
    【解决方案2】:

    根据Github question 解决此问题的唯一方法是 将webpack 升级到 v5。
    我从 webpack 官网找到了this 链接。升级版本最简单的方法是使用您的 javascript 包管理器,例如,如果您使用 npmyarn,则可以使用以下终端代码:

    # using npm 
    $ npm install webpack@5.40.0
    # using yarn
    $ yarn add webpack@5.40.0
    

    注意:目前webpack 的当前版本是5.40.0

    【讨论】:

    • 我在使用 Webpack 5 时也遇到了这个问题。我安装了 ts-loader 9.2.6 和 webpack 5.69.1。
    • 如果您从命令行运行webpack,则运行webpack --version 以确认您运行的版本是v5+。我在我的项目中安装了 v5,但全局安装了 v4,因此不小心使用错误的版本运行了我的构建。
    • cypress/webpack-preprocessor 使用 webpack 4,使用 webpack 5 会报错
    猜你喜欢
    • 1970-01-01
    • 2017-05-27
    • 2020-08-21
    • 2017-08-23
    • 2017-06-20
    • 2021-05-05
    • 2017-08-21
    • 1970-01-01
    • 2017-03-18
    相关资源
    最近更新 更多