AOT构建尝试从@types导入而不是实际模块

时间:2017-05-12 04:59:32

标签: angular systemjs angular2-aot

尝试将auth0-js包中的服务添加到DI容器时,构建尝试从index.js目录而不是node_modules/@types/auth0-js/index.js加载node_modules/auth0-js/index.js文件。< / p>

[21:50:57] 'build.bundles.app.aot' errored after 784 ms
[21:50:57] Error on fetch for @types/auth0-js/index.js at file:///Users/llwt/src/testing/angular-seed-advanced/node_modules/@types/auth0-js/index.js
    Loading dist/tmp/web.module.ngfactory.js
    Loading dist/tmp/main.web.prod.js
    Error: ENOENT: no such file or directory, open '/Users/llwt/src/testing/angular-seed-advanced/node_modules/@types/auth0-js/index.js'
    at Error (native)

我觉得我必须遗漏一些基本的东西。我在Nathan walker的Angular-Advanced-Seed的一个分支中重现了这个问题,可以找到here

正在导入包:

import { WebAuth } from 'auth0-js';
// ...
export function authHttp() {
  return new WebAuth({
    domain: 'foo',
    clientID: 'bar',
  });
}
// ...
@NgModule({
//...
  providers: [
    { provide: WebAuth, useFactory: (authHttp) },
    // ...

如果有任何更具体的信息可以帮我调试,请告诉我。

2 个答案:

答案 0 :(得分:0)

对于将来遇到这种情况的人,事实证明import Data.Char (digitToInt) myFunction :: String -> Int myFunction = foldr step 0 where step x y = (+) (digitToInt x) ( (*) y 2 ) 库的类型定义中存在导致构建失败的错误。

编辑:对于现在正在看这个的人。问题仍然存在,并在this Definitely Typed issue中进行了跟踪。

答案 1 :(得分:0)

我有同样的问题。 不久: 此问题是由WebAuth的DI造成的。
您必须像这样初始化WebAuth:

import { WebAuth } from 'auth0-js'

class AuthService {
    auth0 = new WebAuth(config);

    constructor(private otherDependency: OtherDependency) {}
}

这会使测试中的模拟WebAuth复杂化。 我可以通过Jest来简单地模拟它:

beforeEach(() => {
    require('auth0-js').WebAuth = function() {
      return webAuthMock;
    };
});