未捕获的错误:意外的值' SharedModule'由模块' AppModule'导入。请添加@NgModule注释

时间:2017-10-18 00:45:27

标签: angular angular-cli nativescript symlink angular2-nativescript

我正在开发一个Angular 4项目,该项目有三个平台(使用NativeScript移动,使用Electron移动网络和桌面)。因为我将在这三个项目(服务,模型,管道......)之间共享几个代码,所以我在这三个应用程序的每个src文件夹中创建了一个共享文件夹。我制作了一个复制粘贴,以便在这三个平台的级别同步这个目录。

项目很快就开始增长,同步变得很头疼,所以我开始做一些研究。我有几个提案,但在我看来最简单的,已经与我正在做的事情分开的是将共享文件夹放在解决方案的根目录中,并使用符号链接我同步每个项目中文件夹的内容。

所以我在GitHub上使用了一个非常好的代码来创建符号链接 https://github.com/NathanWalker/angular-seed-advanced/blob/master/tools/install.js

但是当我生成项目时,我遇到了这个我无法理解的错误

compiler.es5.js:1690 Uncaught Error: Unexpected value 'SharedModule' imported by the module 'AppModule'. Please add a @NgModule annotation.
at syntaxError (compiler.es5.js:1690)
at compiler.es5.js:15382
at Array.forEach (<anonymous>)
at CompileMetadataResolver.webpackJsonp.../../../compiler/@angular/compiler.es5.js.CompileMetadataResolver.getNgModuleMetadata (compiler.es5.js:15365)
at JitCompiler.webpackJsonp.../../../compiler/@angular/compiler.es5.js.JitCompiler._loadModules (compiler.es5.js:26795)
at JitCompiler.webpackJsonp.../../../compiler/@angular/compiler.es5.js.JitCompiler._compileModuleAndComponents (compiler.es5.js:26768)
at JitCompiler.webpackJsonp.../../../compiler/@angular/compiler.es5.js.JitCompiler.compileModuleAsync (compiler.es5.js:26697)
at PlatformRef_.webpackJsonp.../../../core/@angular/core.es5.js.PlatformRef_._bootstrapModuleWithZone (core.es5.js:4536)
at PlatformRef_.webpackJsonp.../../../core/@angular/core.es5.js.PlatformRef_.bootstrapModule (core.es5.js:4522)
at Object.../../../../../src/main.ts (main.ts:11)

但是,当我删除符号链接时,我手动将文件重新设置为正常构建。

  1. 符号链接是否是导致此错误的原因? (我有印象)。如果是这样,如何解决?

  2. 是否有另一种简单有效的方法可以在多个项目之间共享我的角度代码?

1 个答案:

答案 0 :(得分:1)

我在Google上搜索后找到了一个解决方案。

这似乎是angular-cli webpack中的一个问题。有关详细信息,请参阅此链接:https://github.com/webpack/webpack/issues/3148

要解决此问题,您应将符号链接源放在计算机的另一个驱动器上。它对我来说很好。

  1. 我将共享模块文件夹放在磁盘驱动器C:\
  2. 我创建了一个从共享文件夹到3个项目目标文件夹的联结符号链接(在Drive D :)上。并且所有文件都是同步的。它很漂亮。