所以当我尝试使用npm链接和一个也包含它自己的节点模块文件夹的库来开发角色项目时,我已经遇到了一段时间的问题。 两者都需要自己的节点模块副本,因为它们都包含自己的组件,而消费者需要导入库项目的模块。
说我有一个链接到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中运行服务时,我收到以下错误:
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'由模块导入 '的AppModule&#39 ;.请添加@NgModule注释。
我已经对这个问题进行了一些研究,我发现有一件事是如果安装的angular / cli软件包是1.2.7或更低版本,你可以通过添加这个代码来成功运行你的项目到您的tsconfig.json文件:
"path": {
"@angular/*": [
"../node_modules/@angular/*"
]
}
这假设您的baseUrl位于您的src目录中。但是,在cli 1.3.0上使用它不再能解决问题。 我只是删除了库中的节点模块文件夹,直到我需要使用它,才能暂时绕过这个问题。但是,我希望有一些问题本身的实际解决方案,而不必卸载并重新安装节点模块文件夹本身。
答案 0 :(得分:0)
作为我们使用的解决方法
cd library-project\dist
npm pack
然后在主模块中
npm i \path\to\library-project\dist\somelibrary.tgz
希望有所帮助