【问题标题】:Webpack fails to parse typescript files. Module parse failed: Unexpected tokenWebpack 无法解析打字稿文件。模块解析失败:意外的令牌
【发布时间】:2021-07-06 06:32:13
【问题描述】:

我在我的一个旧项目上设置 Typescript 和 Webpack,突然遇到这个错误:

您可能需要适当的加载程序来处理此文件类型,目前没有配置加载程序来处理此文件。见https://webpack.js.org/concepts#loaders

然后我从头开始创建了一个新项目,如下所示:

webpack.config.js

const webpack = require('webpack');
const path = require('path');

module.exports = {
    mode: process.env.NODE_ENV === 'production' ? 'production' : 'development',
    entry: {
        main: './src/index.ts'
    },
    module: {
        rules: [
            {
                test: '/\.ts$',
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: [
                            '@babel/preset-env',
                            '@babel/preset-typescript'
                        ]
                    }
                },
                exclude: /node_modules/
            }
        ]
    },
    resolve: {
        extensions: ['.ts'],
    },
    plugins: [
        new webpack.CleanPlugin(),
    ],
    output: {
        filename: '[name].[contenthash].js',
        path: path.join(__dirname, 'dist')
    },

}

tsconfig.json

{
    "compilerOptions": {
        "baseUrl": "./",
        "rootDir": "src",
        "outDir": "dist",
        "lib": ["ES6", "DOM"],
        "target": "es5",
        "module": "es6",
        "noImplicitAny": true,
        "removeComments": true
    }
}

src/index.ts(来自here

class Greeter {
    greeting: string;

    constructor(message: string) {
        this.greeting = message;
    }

    greet() {
        return "Hello, " + this.greeting;
    }
}

let greeter = new Greeter("world");
greeter.greet();

...错误再次出现:/

./src/index.ts 2:12 中的错误 模块解析失败:意外令牌 (2:12) 您可能需要适当的加载程序来处理此文件类型,目前没有配置加载程序来处理此文件。见https://webpack.js.org/concepts#loaders

我觉得我错过了什么,会是什么?

ps:我也尝试过不同的加载器,如ts-loaderawesome-typescript-loader

谢谢!任何帮助表示赞赏:*

【问题讨论】:

    标签: javascript typescript webpack


    【解决方案1】:

    根本原因是您的 Typescript 规则不匹配(“当前没有配置加载程序来处理此文件”),因此 Webpack 将您的 TS 文件作为 Javascript 读取并被特定于 TypeScript 的 : 抛出第 2 行字符 12。来自您的 webpack.config.js

    test: '/\.ts$',
    

    这应该是一个正则表达式。注意缺少单引号:

    test: /\\.ts$/,
    

    请参阅 Webpack 文档 Rule.testCondition 了解更多信息。

    【讨论】:

      猜你喜欢
      • 2019-03-31
      • 2020-11-20
      • 2020-11-20
      • 2021-11-29
      • 2021-11-26
      • 2019-02-15
      • 2023-03-27
      • 2017-04-04
      • 2018-10-11
      相关资源
      最近更新 更多