webpack的resolve.alias似乎不适用于第三方模块

时间:2016-05-19 20:08:28

标签: typescript angular webpack

我正在努力使npm ng2-prismangular2-seed一起使用,但导入 angular2 / http 时出现问题,正如我们最近所知{{3} }}

但是,我会认为webpack配置中的别名可以解决这些问题,但由于某些原因它没有拿起别名。

这是配置,与种子没有变化。

vendor.ts - 这是我修改的唯一一个将ng2-prism添加到供应商包

的文件
// Angular 2
import '@angular/platform-browser-dynamic';
import '@angular/platform-browser';
import '@angular/core';
import '@angular/http';
import '@angular/router-deprecated';

import 'ng2-prism';

ng2-prism的源代码导入很简单(codeblock.component.d.ts:1:66):

import { AfterViewChecked, AfterContentChecked, ElementRef } from 'angular2/core';

webpack.config.js中配置的别名

(...)
resolve: {
    root: [ path.join(__dirname, 'src') ],
    extensions: ['', '.ts', '.js', '.json', '.css', '.html', '.less'],
    alias: {
     (...),
      'angular2/core': path.join(__dirname, 'node_modules', '@angular', 'core', 'index.js'),
     (...)
    }
  },
(...)

记录结果表明找到了正确的绝对文件夹来解析别名。

我遇到的错误 npm start

  

[默认]中的错误C:/workstation/simple-java-mail/src/main/webapp/node_modules/ng2-prism/src/codeblock.component.d.ts:1:66   找不到模块'angular2 / core'。

当然rescoped into @angular,但这是我们迟早会遇到一个或另一个图书馆的情况。

但我没有看到导致无法解决的原因。我错过了什么?

1 个答案:

答案 0 :(得分:0)

我通过github https://github.com/angular/angular2-seed/issues/79#issuecomment-220743677回答 别名确实有效但你遇到的问题是打字稿中的类型无法确定类型。我还更新了repo以反映类型的别名(请记住它不包括所有api更改) https://github.com/angular/angular2-seed/commit/df536f8008b44b038c5100379ce5fcb4864c159f