无法在Angular 4中导入需要json文件的npm包

时间:2017-07-17 10:06:17

标签: json angular webpack angular-cli

我重新安装了一个Angular 4项目,我试图在其中加载npm包steem,如下所示:

app.component.ts

import {Component, OnInit} from '@angular/core';
import * as steem from 'steem';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  title = 'app works!';

  ngOnInit() {
    steem.api.getAccounts(['test', 'test2'], function(err, response){
      console.log(err, response);
    });
  }
}

但是,会发生以下错误:

Failed to compile.

./~/steem/lib/api/index.js
Module not found: Error: Can't resolve './methods' in '/Users/Stephan/Dev/kanzeon/node_modules/steem/lib/api'
 @ ./~/steem/lib/api/index.js 17:15-35
 @ ./~/steem/lib/index.js
 @ ./src/app/app.component.ts
 @ ./src/app/app.module.ts
 @ ./src/main.ts
 @ multi webpack-dev-server/client?http://localhost:4200 ./src/main.ts

在我看来,这是因为它无法解析的./methods是一个JSON文件。 Angular-cli的webpack配置包含一个json加载器(我已经安装了json-loader npm包),但在加载器中存在行exclude: 'node_modules'

我真的不想用我自己的方式覆盖angular-cli的webpack配置(这是他们隐藏其实现的一个很好的理由,它的配置非常有效)但这对我的应用程序造成了问题。

有没有办法确保我可以包含steem npm包并让它加载其json文件而不覆盖webpack配置?

1 个答案:

答案 0 :(得分:2)

  

steem-js需要内部的JSON文件,因此您需要配置JSON加载程序

https://github.com/steemit/steem-js/tree/master/examples/webpack-example

所以我担心你必须扩展/覆盖angular-cli的webpack配置。不幸的是,它似乎是Angular doesn't yet provide a way to extend/override their webpack config

hooks是否有可能?