【问题标题】:Npm link issues with Two angular projects两个角度项目的 Npm 链接问题
【发布时间】:2018-03-13 20:41:41
【问题描述】:

所以我在尝试开发使用 npm 链接的 Angular 项目时遇到了一个问题,该库还包含它自己的节点模块文件夹。 两者都需要自己的节点模块副本,因为它们都将包含自己的组件,并且消费者需要导入库项目的模块。

假设我有一个链接到 LibraryProject 的 ConsumerProject。 我在命令行中运行以下命令: 在 LibraryProject 的根目录

npm link 

在 ConsumerProject 的根目录

npm link library-project

两者都包含相同的以下依赖项/devDependencies:

“依赖”:{

"@angular/animations": "^4.2.4",
"@angular/common": "^4.2.4",
"@angular/compiler": "^4.2.4",
"@angular/core": "^4.2.4",
"@angular/forms": "^4.2.4",
"@angular/http": "^4.2.4",
"@angular/platform-browser": "^4.2.4",
"@angular/platform-browser-dynamic": "^4.2.4",
"@angular/router": "^4.2.4",
"core-js": "^2.4.1",
"rxjs": "^5.4.2",
"zone.js": "^0.8.14"

}, “devDependencies”:{

"@angular/cli": "1.3.2",
"@angular/compiler-cli": "^4.2.4",
"@angular/language-service": "^4.2.4",
"@types/jasmine": "~2.5.53",
"@types/jasminewd2": "~2.0.2",
"@types/node": "~6.0.60",
"codelyzer": "~3.1.1",
"jasmine-core": "~2.6.2",
"jasmine-spec-reporter": "~4.1.0",
"karma": "~1.7.0",
"karma-chrome-launcher": "~2.1.1",
"karma-cli": "~1.0.1",
"karma-coverage-istanbul-reporter": "^1.2.1",
"karma-jasmine": "~1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.1.2",
"ts-node": "~3.2.0",
"tslint": "~5.3.2",
"typescript": "~2.3.3"

}

ConsumerProject 将从 LibraryProject 导入 LibraryModule。 当我在 ConsumerProject 中运行 ng serve 时,出现以下错误:

ERROR in Error encountered resolving symbol values statically. Function 
calls are not supported. Consider replacing the function or lambda with a 
reference to an exported function (position 194:50 in the original .ts 
file), resolving symbol NgModule in *path to directory*, resolving symbol 
LibraryModule in *path to directory*, resolving symbol LibraryModule in 
*path to directory*

重新编译代码将导致代码编译,当我加载页面时,我收到以下错误: 未捕获的错误:模块导入的意外值“LibraryModule” '应用模块'。请添加@NgModule 注解。

我对这个问题做了一些研究,我发现的一件事是,如果安装的 angular/cli 包的版本为 1.2.7 或更低,您可以通过将此代码添加到您的tsconfig.json 文件:

"path": {
  "@angular/*": [
    "../node_modules/@angular/*"
  ]
}

这是假设您的 baseUrl 在您的 src 目录中。但是,在 cli 1.3.0 中使用它不再解决问题。 通过简单地删除我的库中的节点模块文件夹,直到我需要使用它,我已经能够暂时绕过这个问题。不过我希望有某种实际的解决方案来解决问题本身,而不必卸载并重新安装节点模块文件夹本身。

【问题讨论】:

  • 你修好了吗?

标签: angular typescript npm-link


【解决方案1】:

作为一种解决方法,我们使用

cd library-project\dist npm pack

然后在主模块中

npm i \path\to\library-project\dist\somelibrary.tgz

希望对你有帮助

【讨论】:

  • 它是这样工作的,但具体是如何工作的呢?我们是否应该为每次单客更改构建、发布、打包和安装库?我们怎么能这样发展?你们有开发环境的解决方案吗?
猜你喜欢
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 2013-04-27
  • 2021-07-07
  • 1970-01-01
  • 2019-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多