-
我有一个使用角度CLI创建的简单角度组件(ng new component-name,它有示例模块) .
-
将组件名称发布到我的私有npm存储库 .
-
ng build 用于创建分发文件 - dist / mySampleComponent.js ::
-
使用角度CLI创建了另一个简单的角度应用程序 .
-
是否安装了npm以安装模块组件名称
-
模块已成功复制到node_modules / @ private-repo / component-name下的角度应用程序
-
当我从AppModule中的'@private-repo/component-name'导入时;我收到以下错误
模块'“... / node_modules / @ private-repo / component-name / dist / mySampleComponent”'没有导出的成员'SampleModule' .
有什么想法吗?
2 回答
"ng build is used to create the distribution file - dist/ mySampleComponent.js"
我怀疑这是你出错的地方 .
当你
build
一个角项目时,它会将打字稿编译成javascript . Javascript没有模块或组件,因为它们被转换为本机javascript / webpack代码 .你收到错误的原因......
...是因为你的
mySampleComponent.js
不再包含角度转换器可识别的相关模块装饰器/元数据 .如果你进入一个角度项目并浏览
node_modules
中的一些预编译导入,例如@angular/core
或rxjs
等中的那些,你会发现这些都包含了打字稿文件 . 将其与编译后使用的文件进行比较,您可以看到它们只包含.js
文件 . 这是由于前面提到的 .ng build只需编译typescript并吐出javascript
要获得Javascript的转换版本,我们可以使用编译器'ngc'
如果你的代码包含css和html,那么我们需要额外的bundle API,比如webpack
所以为了构建一个角度库,我们需要ngc webpack(SystemJS,gulp或任何其他构建框架)