所以,当我试图在一个使用npm link的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将通过LibraryModule从LibraryProject导入。当我在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*重新编译代码将导致代码编译,当我加载页面时,我得到以下错误:未捕获错误:由模块'AppModule‘导入的意外值'LibraryModule’。请添加@NgModule批注。
我对这个问题做了一些研究,我发现如果安装的angular/cli包的版本是1.2.7或更低,您可以通过将以下代码添加到tsconfig.json文件中来成功运行项目:
"path": {
"@angular/*": [
"../node_modules/@angular/*"
]
}假设你的baseUrl在你的src目录下。然而,在cli 1.3.0中使用它不再能解决问题。我已经能够暂时绕过这个问题,只需删除我的库中的node modules文件夹,直到我需要使用它。然而,我希望问题本身会有某种实际的解决方案,而不是必须卸载并重新安装节点模块文件夹本身。
发布于 2018-04-13 14:11:35
作为一种变通方法,我们使用
cd library-project\dist npm pack
然后在主模块中
npm i \path\to\library-project\dist\somelibrary.tgz
希望它能帮上忙
https://stackoverflow.com/questions/46531234
复制相似问题