在Ionic和Angular应用程序之间共享代码
我有一个项目,我有多个Angular应用程序和一个ionic应用程序。我有许多类(模型)和服务,可以在所有应用程序之间共享 我的第一个想法是将共享文件放在各自独立的目录/文件夹中,并创建一个符号链接。我已尝试启动ionic应用程序,收到以下信息: 模块生成失败:错误: /home/norman/Work/vem共享/共享服务/table/table.service.ts 类型脚本编译中缺少。请确认它在里面 通过“文件”或“包含”属性配置您的tsconfig 在搜索此错误消息后,我遇到了,但是,这是一个较低的角度版本(我使用的是angular 6和Ionic 4)。我还注意到一些关于符号链接在angular cli中不起作用的帖子,这似乎适用于旧版本 我想知道是否有人知道如何解决这个错误,以及符号链接是否在角度应用程序/离子应用程序中工作在Ionic和Angular应用程序之间共享代码,angular,ionic-framework,Angular,Ionic Framework,我有一个项目,我有多个Angular应用程序和一个ionic应用程序。我有许多类(模型)和服务,可以在所有应用程序之间共享 我的第一个想法是将共享文件放在各自独立的目录/文件夹中,并创建一个符号链接。我已尝试启动ionic应用程序,收到以下信息: 模块生成失败:错误: /home/norman/Work/vem共享/共享服务/table/table.service.ts 类型脚本编译中缺少。请确认它在里面 通过“文件”或“包含”属性配置您的tsconfig 在搜索此错误消息后,我遇到了,但是,这
感谢Angular webapp通过添加
“preserveSymlinks”:对angular.json文件为true
angular.json
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"my-project": {
"root": "",
"sourceRoot": "src",
"projectType": "application",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "target",
"index": "src/index.html",
"main": "src/main.ts",
"tsConfig": "src/tsconfig.app.json",
"polyfills": "src/showcase/polyfills.ts",
"preserveSymlinks": true,
...
"angularCompilerOptions": {
"annotateForClosureCompiler": true,
"skipTemplateCodegen": true,
"strictMetadataEmit": true,
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true,
"enableResourceInlining": true,
"preserveSymlinks": true },
现在,如果您想创建带有保留符号链接的库,那么您必须在tsconfig.lib.json
中添加相同的功能,因为对于库,您没有angular.json
tsconfig.lib.json
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"my-project": {
"root": "",
"sourceRoot": "src",
"projectType": "application",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "target",
"index": "src/index.html",
"main": "src/main.ts",
"tsConfig": "src/tsconfig.app.json",
"polyfills": "src/showcase/polyfills.ts",
"preserveSymlinks": true,
...
"angularCompilerOptions": {
"annotateForClosureCompiler": true,
"skipTemplateCodegen": true,
"strictMetadataEmit": true,
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true,
"enableResourceInlining": true,
"preserveSymlinks": true },
对于爱奥尼亚应用程序,符号链接问题是一个长期悬而未决的问题,解决方案似乎仍处于公开公关中。您可以跟踪问题
您可以使用可共享的服务/类创建Angular模块,并将其放到NPM上。然后在所有应用程序上安装模块并使用它。
您可以更新模块并不断更新所有应用程序代码库。考虑到两者的结构,我认为这几乎是不可能的。你能分享一些代码或者@merlin你想分享什么样的模块吗?不确定这对你来说是否是一个可接受的解决方案,但是你考虑过使用Nrwl Nx monorepo吗?另外,你可以阅读这篇文章来分享(基于Ngrx)Angular7 web应用程序和Ionic4移动应用程序之间的逻辑您也可以阅读本文,在NPM上发布是不需要的。您也可以在package.json中使用本地文件引用:“@yourapp/yourmodule”:“file:dist/yourapp/yourmodule”,请记住,将此文件添加到package.json后,您需要运行npm i。使用npm可以非常有助于版本控制和更新。是的,这当然是可能的@NicoTimmerman