多个webpack别名配置无法解析模块

时间:2016-11-15 20:53:27

标签: angularjs typescript webpack ts-loader

我正在开发一个用Typescript编写的Angular 2应用程序,它使用webpack与ts-loader结合在一起。

我非常依赖webpack的resolve.alias来满足不同的构建输出,我遇到了一个问题。

当运行特定的构建时,ts-loader会抛出错误,说它无法找到当前构建中使用的模块。我认为这是由于别名指向不同的文件。

例如: file:myApp.ts

import {Logger} from 'logger';

export class myApp {}

我有两个别名JSON文件,一个设置为指向'记录器'在 remoteSystemLogger.ts ,另一个指向 consoleLogger.ts

  • Build A将使用remoteSystemLogger,
  • Build B将使用consoleLogger

现在每个记录器类都将导入它们的相对依赖项。例如:

file:remoteSystemLogger.ts

import {HTTP} from 'http';

export class Logger {}

问题是,当我运行构建B时,我收到一条错误说:

  

remoteSystemLogger.ts中的错误

     

错误TS2307:找不到模块' http'。

http以及remoteSystemLogger当前未在Build B的别名JSON文件中指定,因为Build B应该不依赖于它。

用于webpack构建的别名文件是在构建时通过参数确定的。

以下是webpack config

中使用的解析示例
let moduleAliasingConfig = `./alias/${buildType}.json`

 // ....

resolve: {
    root: [
      path.resolve('.'),
      path.resolve('node_modules')
    ],
    alias: moduleAliasingConfig,
    extensions: ['', '.ts', '.js']
  },

这是ts-loader配置:

loaders: [
    {test: /\.ts$/, loaders: ['ts'], exclude: [/\.(spec|e2e)\.ts$/]}
]

我不确定是否有错误配置的东西,或者这是加载器,webpack解析器的问题,或者只是我对混叠如何工作的理解。

根据我的理解,该webpack将遍历我的导入/依赖树,基于别名文件和我的入口点。

其他环境信息:

package.json setup:

  • " ts-loader":" ^ 1.2.1",
  • " webpack":" ^ 1.13.0"

0 个答案:

没有答案