Uncaught Error: Unexpected value 'SharedModule' imported by the module 'AppModule'. Please add a @NgModule annotation
Uncaught Error: Unexpected value 'SharedModule' imported by the module 'AppModule'. Please add a @NgModule annotation
我正在开发一个 Angular 4 项目,该项目包含三个平台(使用 NativeScript 的移动设备、使用 Electron 的 Web 和桌面)。因为我将在这三个项目(服务、模型、管道...)之间共享多个代码,所以我在这 3 个应用程序的每个 src
文件夹中创建了一个共享文件夹。我做了复制粘贴在这3个平台级别同步这个目录。
项目很快开始增长,同步变得很头疼,所以我开始做一些研究。我有几个建议,但在我看来最简单并且已经与我正在做的事情分开的一个是将共享文件夹放在解决方案的根目录中,并使用符号链接同步每个项目中文件夹的内容。
所以我使用了在 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)
但不好的是,当我删除符号链接并手动放回我的文件时,所有构建都正常进行。
符号链接是导致此错误的原因吗? (我有印象)。如果有,如何解决?
是否有另一种简单有效的方法可以在多个项目之间共享我的 angular 代码?
我在 Google 上搜索后找到了解决方案。
看来是angular-cli webpack 的问题。有关详细信息,请参阅此 link:https://github.com/webpack/webpack/issues/3148
要解决此问题,您应该将 symlink 源放在计算机的另一个驱动器上。它对我来说很好用。
- 我将我的共享模块文件夹放在磁盘驱动器 C:\
- 我创建了一个从共享文件夹到 3 个项目目标文件夹(在驱动器 D: 上)的连接 symlink。并且所有文件都是同步的。很漂亮。
我正在开发一个 Angular 4 项目,该项目包含三个平台(使用 NativeScript 的移动设备、使用 Electron 的 Web 和桌面)。因为我将在这三个项目(服务、模型、管道...)之间共享多个代码,所以我在这 3 个应用程序的每个 src
文件夹中创建了一个共享文件夹。我做了复制粘贴在这3个平台级别同步这个目录。
项目很快开始增长,同步变得很头疼,所以我开始做一些研究。我有几个建议,但在我看来最简单并且已经与我正在做的事情分开的一个是将共享文件夹放在解决方案的根目录中,并使用符号链接同步每个项目中文件夹的内容。
所以我使用了在 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)
但不好的是,当我删除符号链接并手动放回我的文件时,所有构建都正常进行。
符号链接是导致此错误的原因吗? (我有印象)。如果有,如何解决?
是否有另一种简单有效的方法可以在多个项目之间共享我的 angular 代码?
我在 Google 上搜索后找到了解决方案。
看来是angular-cli webpack 的问题。有关详细信息,请参阅此 link:https://github.com/webpack/webpack/issues/3148
要解决此问题,您应该将 symlink 源放在计算机的另一个驱动器上。它对我来说很好用。
- 我将我的共享模块文件夹放在磁盘驱动器 C:\
- 我创建了一个从共享文件夹到 3 个项目目标文件夹(在驱动器 D: 上)的连接 symlink。并且所有文件都是同步的。很漂亮。