angular2 找不到名称要求

Posted

技术标签:

【中文标题】angular2 找不到名称要求【英文标题】:angular2 cannot find name require 【发布时间】:2017-01-29 03:21:02 【问题描述】:

我想在我的应用程序中使用一个名为 ng2-material-select 的新组件。 将其添加到 systemjs.config.js

var map = 
 'Ng2Select': '/node_modules/ng2-material-select',
 "angular2-jwt": "/node_modules/angular2-jwt/angular2-jwt"
;

var packages = 
    'Ng2Select':  main: 'index.js', defaultExtension: 'js' ,
;

但是当我启动应用程序时,我遇到了以下错误:

从http://192.168.0.46:3002/app/module.js 将http://192.168.0.46:3002/ng2-material-select 加载为“ng2-material-select”时出错

node_modules/ng2-material-select/index.ts 中也有以下错误,我认为这可能会导致加载问题:

找不到名称要求:

const components = require('./ng2-select.bundle.js');

我更新了 angularjs 和 typescript,但问题仍然没有解决。

请帮帮我。

【问题讨论】:

你有没有像这样在你的 AppModule 中添加 Ng2SelectModule - import Ng2SelectModule from '../src/ng2-select.module'; 是的,在 module.ts 我有 import Ng2SelectModule from 'ng2-material-select'; 【参考方案1】:

我相信你的 systemjs.config.js 映射是错误的。

这个..

'Ng2Select': '/node_modules/ng2-material-select'

指向一个TS文件,相信你需要指向一个JS文件。我相信你想要..

'Ng2Select': '/node_modules/ng2-material-select/dist/ng2-select.bundle.js'

在 /node_modules/ng2-material-select 文件夹中四处寻找并确保您指向正确的文件。

(我相信 JS 文件是 TS 文件试图要求的文件)。

【讨论】:

【参考方案2】:

我通过在打字稿文件中添加以下行来解决它:

declare function require(fileName: string): any;

然后,在构造函数中,读取一个 json 文件:

this.myConfig = require('../assets/config.' + location.hostname + '.json');

【讨论】:

以上是关于angular2 找不到名称要求的主要内容,如果未能解决你的问题,请参考以下文章

Angular2 代码中的 TypeScript 错误:找不到名称“模块”

Angular 2:找不到名称“订阅”

Angular 2 单元测试:找不到名称“描述”

Angular 和 Typescript:找不到名称 - 错误:找不到名称

找不到模块“快递”;找不到名称“进程”;等等

Typescript instanceof - 找不到名称