首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个angular项目的Npm链接问题

两个angular项目的Npm链接问题
EN

Stack Overflow用户
提问于 2017-10-03 02:10:36
回答 1查看 831关注 0票数 0

所以,当我试图在一个使用npm link的angular项目中进行开发时,我遇到了一个问题,这个项目的库也包含它自己的节点模块文件夹。两者都需要自己的节点模块副本,因为它们都将包含自己的组件,而使用者将需要导入库项目的模块。

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

代码语言:javascript
复制
npm link 

在ConsumerProject的根目录

代码语言:javascript
复制
npm link library-project

两者都包含相同的依赖关系/devDependencies:

“依赖”:{

代码语言:javascript
复制
"@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":{

代码语言:javascript
复制
"@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将通过LibraryModule从LibraryProject导入。当我在ConsumerProject中运行ng serve时,我得到了以下错误:

代码语言:javascript
复制
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*

重新编译代码将导致代码编译,当我加载页面时,我得到以下错误:未捕获错误:由模块'AppModule‘导入的意外值'LibraryModule’。请添加@NgModule批注。

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

代码语言:javascript
复制
"path": {
  "@angular/*": [
    "../node_modules/@angular/*"
  ]
}

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

EN

回答 1

Stack Overflow用户

发布于 2018-04-13 14:11:35

作为一种变通方法,我们使用

cd library-project\dist npm pack

然后在主模块中

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

希望它能帮上忙

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46531234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档