模块未找到:错误:无法解析'ts-loader'

27

以下是我的webpack.config.js

    var webpack = require('webpack'),
  path = require('path'),
  yargs = require('yargs');

var libraryName = 'MyLib',
  plugins = [],
  outputFile;

if (yargs.argv.p) {
  plugins.push(new webpack.optimize.UglifyJsPlugin({
    minimize: true
  }));
  outputFile = libraryName + '.min.js';
} else {
  outputFile = libraryName + '.js';
}

var config = {
  entry: [
    __dirname + '/src/TestClass.ts'
  ],
  devtool: 'source-map',
  output: {
    path: path.join(__dirname, '/dist'),
    filename: outputFile,
    library: libraryName,
    libraryTarget: 'umd',
    umdNamedDefine: true
  },
  module: {
    rules: [{
      test: /\.tsx?$/,
      use: 'ts-loader', //Something wrong here
      exclude: /node_modules/
    }]
  },
  resolve: {
    modules: [__dirname],
    extensions: ['.ts', '.js', '.tsx']
  },
  plugins: plugins

      };

module.exports = config;

这是一个TypeScript项目。

当我使用Webpack 4.5.0版本构建并压缩TypeScript项目时,出现以下错误:

找不到模块:错误:无法解析 'ts-loader'

不确定问题在哪里。

我使用的是ts-loader 4.2.0版本。

TypeScript版本为2.8.1。

请给予建议。


1
你的 package.json 开发依赖中安装了 ts-loader 吗?我的代码行看起来是这样的:{ test: /.ts$/, use: [{ loader: 'ts-loader', options: { silent: true } }, 'angular-router-loader'] }我正在使用 ts-loader 2.2.2 版本,而你则在使用一个相当先进的 TypeScript 版本。 - The Segfault
是的,我已经安装了 ts-loader。它在 package.json 文件中的 dev 依赖项中。 - MARKAND Bhatt
1
你试过使用 { loader: 'ts-loader' } 而不是 'ts-loader' 吗? - The Segfault
2个回答

43

请确保您已安装了 ts-loader 并将其添加到规则中:

npm install -D ts-loader       

 module: {
    rules: [
      {test: /\.ts$/, exclude: /node_modules/, loader: 'ts-loader'}
    ]
  },

更新: 似乎有些人在安装ts-loader时遇到了问题。使用“npm ci”或删除您的node_modules文件夹是一个好的开始。我不知道这个软件包是否有任何特定的问题防止它被安装npm。


8
该回答未解释为什么当ts-loader在package.json中存在时,npm无法安装它。 - stackoverflowed
1
在我的情况下,我只需要重新启动VS。 - HB MAAM

1

我也遇到了同样的问题,我在package.json中已经列出了ts-loader,但由于某些原因它在某个时刻消失了。

对我而言,解决方法是强制重新安装所有模块,然后ts-loader再次出现并正常工作。

npm i -force

或者

yarn install --force

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接