Npm链接问题与两个角度项目

时间:2017-10-02 18:10:36

标签: angular typescript npm-link

所以当我尝试使用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上使用它不再能解决问题。 我只是删除了库中的节点模块文件夹,直到我需要使用它,才能暂时绕过这个问题。但是,我希望有一些问题本身的实际解决方案,而不必卸载并重新安装节点模块文件夹本身。

1 个答案:

答案 0 :(得分:0)

作为我们使用的解决方法

cd library-project\dist npm pack

然后在主模块中

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

希望有所帮助