Webpack 无法解析打字稿文件。模块解析失败:意外的令牌

时间:2021-04-10 16:58:33

标签: javascript typescript webpack

我在我的一个旧项目上设置 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

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

1 个答案:

答案 0 :(得分:1)

根本原因是您的 Typescript 规则不匹配(“目前没有配置加载器来处理此文件”),因此 Webpack 将您的 TS 文件作为 Javascript 读取并被 TypeScript 特定的 {{1} } 在第 2 行的第 12 个字符。来自您的 :

webpack.config.js

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

test: '/\.ts$',

有关更多信息,请参阅 Webpack 文档 Rule.testCondition