没有导出的成员/节点模块
Posted
技术标签:
【中文标题】没有导出的成员/节点模块【英文标题】:No Exported Member / Node Modules 【发布时间】:2016-12-18 10:17:09 【问题描述】:我刚刚使用here 找到的 5 分钟快速入门来启动 Angular 2 / Typescript。我遇到了看起来很常见的问题,但可能有点不同。我遇到了各种“无导出成员”问题。例子:
来自 app.module.ts:
import NgModule from '@angular/core';
import BrowserModule from '@angular/platform-browser';
返回
...node_modules/@angular2/core/index" has no exported member 'NgModule'.
和
...@angular/platform-browser/index" has no exported member 'BrowserModule'.
并且来自 main.ts:
import platformBrowserDynamic from '@angular/platform-browser-dynamic';
抛出:
...@angular/platform-browser-dynamic/index" has no exported member 'platformBrowserDynamic'.
我正在运行 node 版本 4.4.7 和 npm 版本 3.10.5。
我知道这些问题可能可以通过将 node 或 npm 回滚到与教程相关的版本在教程的上下文中解决。我想我更喜欢解释如何使教程中的代码与当前版本的节点相关。
ETA:这些错误发生在编译时,而不是执行时。
【问题讨论】:
【参考方案1】:Editor 缓存问题,常见于 IDE 的 android Studio、VS Code 和 Atom。 重新启动编辑器/IDE 会有所帮助。
【讨论】:
【参考方案2】:请将 package.json 中的所有 @angular 依赖项至少更新为“2.0.0-rc.5”
然后在 main.ts 中验证您的应用程序引导程序。
根据 2.0.0-rc.5 的更改日志,引导您的应用程序发生了变化。或另见更新的教程指南https://angular.io/guide/quickstart。
import NgModule from '@angular/core';
@NgModule(
declarations: […], // directives, components, and pipes owned by this NgModule
imports: [BrowserModule],
providers: […], // additional providers
bootstrap: [MainComponent],
)
class MyAppModule
// Ahead of Time compile
import platformBrowser from ‘@angular/platform-browser’;
platformBrowser().bootstrapModuleFactory(MyAppModuleNgFactory);
// JIT compile long form
import platformBrowserDynamic from ‘@angular/platform-browser-dynamic’;
platformBrowserDynamic().bootstrapModule(MyAppModule);
【讨论】:
【参考方案3】:在 package.json 文件中,所有使用 rc.4 的依赖项,将它们替换为 rc.5。然后就可以了。
【讨论】:
【参考方案4】:对我来说,这是 VSCode 编辑器的问题。只需重新打开编辑器即可解决它
【讨论】:
这与 Atom 完全相同。我什至不需要关闭它,只是擦除并再次输入,并且没有更多的ts错误。 FWIW,我认为两个编辑器中都有一个重新加载功能(Cmd + Shift + P,开发人员:VSCode 中的重新加载窗口,在 Atom 中可能类似)也可以解决此问题而无需关闭/重新打开 【参考方案5】:NgModule
类是通过node_modules/@angular/core/index.d.ts
之一从node_modules/@angular/core/src/metadata.d.ts
文件导出的。
我想知道您是否在tsconfig.json
文件中正确指定了moduleResolution
属性:
"compilerOptions":
"target": "es5",
"module": "commonjs",
"moduleResolution": "node", // <-----
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
【讨论】:
分辨率就是这样。诚然,我手动键入教程的每个文件只是为了习惯语法,但是一旦我遇到编译错误,我要做的第一件事就是返回并用源代码中的直接复制/粘贴替换我手动键入的工作。在这种情况下,您发布的正是我的 tsconfig.json 的内容 也许我说的太直白了,但是我的 metadata.d.ts 或 index.d.ts 文件中都没有导出 NgModule。事实上,'NgModule' 根本没有出现在任何一个文件中。 真的!您使用哪个版本的 Angular2,因为它出现在 RC5 中...看看您的package.json
文件。
2.0.0-rc.4。那是直接来自链接的源代码
我将在我的 package.json 中更改它,看看是否能解决问题。以上是关于没有导出的成员/节点模块的主要内容,如果未能解决你的问题,请参考以下文章
(节点:52213)警告:在循环依赖中访问模块导出的不存在属性“MongoError”(使用节点--trace-warnings