标签: angular-cli-v7

TypeError:无法读取getAssignmentTargetKind上未定义的属性“种类”

将我的Angular 6项目更新到7.x时开始出现此问题。

我在angular-cli github存储库上打开了一个问题,但他们无济于事。

因此,我要做的是创建一个新项目,并一个接一个地添加所有组件,以“希望”注意到引起问题的原因。

不幸的是我无法确定问题所在。这是日志:

ERROR in : TypeError: Cannot read property 'kind' of undefined
at getAssignmentTargetKind (E:\McClient\node_modules\typescript\lib\typescript.js:10049:28)
at Object.isAssignmentTarget (E:\McClient\node_modules\typescript\lib\typescript.js:10092:16)
at checkObjectLiteral (E:\McClient\node_modules\typescript\lib\typescript.js:46107:45)
at checkExpressionWorker (E:\McClient\node_modules\typescript\lib\typescript.js:50748:28)
at checkExpression (E:\McClient\node_modules\typescript\lib\typescript.js:50696:42)
at checkExpressionWithContextualType (E:\McClient\node_modules\typescript\lib\typescript.js:50524:26)
at checkApplicableSignature (E:\McClient\node_modules\typescript\lib\typescript.js:47963:35)
at chooseOverload (E:\McClient\node_modules\typescript\lib\typescript.js:48281:26)
at resolveCall (E:\McClient\node_modules\typescript\lib\typescript.js:48231:26)
at resolveCallExpression (E:\McClient\node_modules\typescript\lib\typescript.js:48534:20)
at resolveSignature (E:\McClient\node_modules\typescript\lib\typescript.js:48800:28)
at getResolvedSignature (E:\McClient\node_modules\typescript\lib\typescript.js:48844:26)
at checkCallExpression (E:\McClient\node_modules\typescript\lib\typescript.js:48936:29)
at checkExpressionWorker (E:\McClient\node_modules\typescript\lib\typescript.js:50759:28)
at checkExpression (E:\McClient\node_modules\typescript\lib\typescript.js:50696:42)
at resolveDecorator (E:\McClient\node_modules\typescript\lib\typescript.js:48741:28)
Run Code Online (Sandbox Code Playgroud)

这是指向github问题的链接,其中包含我应该记录的checkSourcefile函数的日志:

https://github.com/angular/angular-cli/issues/13172

如何跟踪并(希望)解决造成此问题的原因?

编辑:我的ng --version信息

Angular CLI: 7.1.3
Node: 8.11.4
OS: win32 x64
Angular: 7.1.3
... …
Run Code Online (Sandbox Code Playgroud)

typescript angular-cli angular angular-cli-v7

19
推荐指数
1
解决办法
9114
查看次数

在角度延迟加载中找不到模块

我在 Mac 环境下成功创建了一个 angular 项目

Angular CLI: 7.0.5
Node: 8.11.3
OS: darwin x64
Angular: 7.0.3
Run Code Online (Sandbox Code Playgroud)

现在我在 ubuntu 18.04 上使用设置运行相同的代码

Angular CLI: 7.3.9
Node: 12.9.1
OS: linux x64
Angular: 7.2.15
Run Code Online (Sandbox Code Playgroud)

但是在尝试延迟加载另一个模块时出现了一个非常奇怪的问题,我不断收到此错误错误:找不到模块“app/website/site.module”

这是我的项目结构

在此处输入图片说明

和 app-routing.module.ts

 const routes: Routes = [    
      {
        path: 'site',
        loadChildren: 'app/website/site.module#SiteModule',
      }
    ]
Run Code Online (Sandbox Code Playgroud)

路由用于在mac中工作但在ubuntu中失败

我查了一个不同的解决方案

const rootRoutes: Routes = [
  { path: 'site', loadChildren: './website/site.module#SiteModule' }
];
Run Code Online (Sandbox Code Playgroud)

但它仍然无法正常工作。

angular-routing angular angular-cli-v7

10
推荐指数
2
解决办法
6718
查看次数

如何通过新的@ angular / cli v7 angular.json或custom-webpack.config.js添加其他Postcss插件?

@ angular / cli @ 7 +允许customWebpackConfig指定以提供自定义Webpack配置,例如:

  "architect": {
    "build": {
      "builder": "@angular-builders/custom-webpack:browser",
      "options": {
        "customWebpackConfig": {
          "path": "./build/custom-webpack.config.js",
          "mergeStrategies": {
            "externals": "prepend"
          }
        },
        ...
Run Code Online (Sandbox Code Playgroud)

然后,从技术上讲,该文件允许您添加,添加或替换webpack配置的任何部分。在升级到@angular@7.1.3和之前,@angular/cli@7.1.3我们已经弹出webpack配置进行了一些添加。其中一个附加功能是postcss-momentum-scrollingpostcss-loader插件,该插件自动在所有可滚动容器上启用iOS动量滚动。

我正在寻求有关如何通过允许的受支持的自定义来生成必要的自定义Webpack代码以加载此插件的支持@angular/cli@7+

这是我在custom-webpack.config.js文件中尝试过的示例:

const postcssMomentumScrolling = require('postcss-momentum-scrolling');

module.exports = {
  module: {
      rules: [
          {
              test: /\.scss$|\.sass$/,
              use: [
                  {
                      "loader": "postcss-loader",
                      "options": {
                          "plugins": [
                            postcssMomentumScrolling(),
                          ]
                      }
                  }
              ]
          },
      ],
  },
};
Run Code Online (Sandbox Code Playgroud)

一旦我触摸webpack配置的scss块,它似乎会执行替换操作而不是合并或添加操作,从而破坏了构建。

我想知道是否有人对如何查看@angular/cli生成的初始Webpack配置有指导或建议,这是修改的起点,也是预览/查看要作为调试执行的代码的方法。

同样,类似定制的示例也很好。

谢谢!

postcss-loader angular7 angular-cli-v7

9
推荐指数
1
解决办法
710
查看次数

在 Angular 8 中生成带有组件和路由的模块(使用 angular cli 命令)

我使用 angular cli 命令ng new my-app创建了新的 angular 项目

然后,我想在目录中创建名为登陆页面的模块src/app,所以我使用命令ng gm登陆页面 --routing=true创建两个文件,即一个模块和一个路由文件,如下所示:

src/app/landing-page/landing-page-routing.module.ts (254 bytes) 

src/app/landing-page/landing-page.module.ts (300 bytes)
Run Code Online (Sandbox Code Playgroud)

但是现在,我想用它的根组件创建模块并在名为登陆页面的单个文件夹中路由这两个模块,那么我如何使用单个 cli 命令来做到这一点?

angular-cli angular angular-cli-v7

9
推荐指数
2
解决办法
3万
查看次数

如何在angular-cli编译器中使用'url-loader'

通常我运行我的项目并使用WebPack构建我的SASS文件,我有规则生成一个CSS文件,url-loader将所有url(...)sass文件转换为dataURI.

所以background: url('my-file.svg')会转换为background url('data:image/svg+xml;base64,SoMeGiBbeRiShHeRe')

我想知道是否有办法用ng编译器实现这一目标?我对此进行了一些研究,并且使用它的方法是使用ng eject但该选项不再可用.

angular-cli angular angular-cli-v7

8
推荐指数
0
解决办法
457
查看次数

用于默认/开发的 Angular CLI 文件替换

我有一个相当复杂的,angular.json因为我有多个项目。我想要的是每个项目单独的 environment.ts 文件。当构建目标是生产时替换环境文件似乎非常简单:

"configurations": {
  "production": {
    "fileReplacements": [
      {
        "replace": "src/environments/environment.ts",
        "with": "src/private-label/redacted/environments/environment.prod.ts"
      }
    ],
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是一种对默认/开发配置执行相同操作的方法。在angular.json不包含配置节点这样的事情,我可以找到,因此我不知道是否有可能和/或在指定fileReplacements的时候不是针对生产。

当然,如果有更好的方法来处理我没有看到的每个项目的环境,我也会对此感兴趣。

angular-cli angular-cli-v7

7
推荐指数
1
解决办法
6600
查看次数

使用Angular CLI创建库时如何捆绑供应商字体

我正在使用Angular CLI(v7.x)创建一个组件库,并且无法弄清楚如何获得css规则包含在ng-packagr生成的dist文件夹中所需的第三方字体资产。

由于ng-packagr根据此问题不支持scss捆绑,因此我在后期构建任务中使用scss-bundle为我执行捆绑,并将最终捆绑的scss文件放入我的dist文件夹中。

但是,某些css规则(例如字体声明)包括对相对字体文件夹的url引用,而我还没有将其包含在dist文件夹中。

因此,例如,在我的角度库应用程序中,我有styles.scss文件,其中包含一个导入图标样式表的条目:

@import "~primeicons/primeicons.css";
Run Code Online (Sandbox Code Playgroud)

但是在我的node_modules文件夹中有一个相对的字体文件夹,这些质素位于这些文件夹中,用于CSS。

在此处输入图片说明

一种方法是,我可以写一个进一步的后期构建步骤,将它们捆绑在一起,并将它们放到dist文件夹中我串联的scss文件旁边的fonts文件夹中,以便可以解决它们。

我想知道是否有更聪明的方法,或者在构建库来执行此操作时是否使用ng-packager或angular-cli构建的方法?

更新资料

因此,我尝试了fonts在库项目根目录(实际上是在资产文件夹下)中拥有一个文件夹的方法,并在dist构建库后将其复制到文件夹的根目录中。

在我的运动场应用程序中,我尝试在实际的lib中使用打包的样式,我有以下内容:

my-lib-playground / src / styles.scss

@import "../../../dist/my-lib/styles";
Run Code Online (Sandbox Code Playgroud)

但是,当尝试使用CLI构建我的游乐场应用程序时,我得到:

ERROR in ./src/styles.scss (/Users/someone/Documents/Github/my-lib-playground/node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!/Users/someone/Documents/Github/my-lib-playground/node_modules/postcss-loader/src??embedded!/Users/someone/Documents/Github/my-lib-playground/node_modules/sass-loader/lib/loader.js??ref--14-3!./src/styles.scss)
Module Error (from /Users/someone/Documents/Github/my-lib-playground/node_modules/postcss-loader/src/index.js):
(Emitted value instead of an instance of Error) CssSyntaxError: /Users/someone/Documents/Github/my-lib-playground/dist/my-lib-playground/styles.scss:609:56: Can't resolve './fonts/open-sans-v15-latin-700.eot' in '/Users/someone/Documents/Github/my-lib-playground/projects/my-lib-playground/src'
Run Code Online (Sandbox Code Playgroud)

所以我的实际问题是:

在使用cli进行构建时,如何使正在使用的“游乐场”应用程序正确地包含\解析字体文件?相对于我当前的Playground应用,显然这些问题正在设法解决。什么是正确的解决方案?还是我做错了什么?

其它的办法

制作primeng一个peerDependency我的库,让开发人员负责添加primeng到他们的应用中,并angular.json根据以下丹尼尔建议的答案将相关样式包括在内。这是正确的方法,只有方法吗?

angular-cli primeng angular ng-packagr angular-cli-v7

7
推荐指数
1
解决办法
955
查看次数

Angular 7:如何从iframe访问URL中的查询字符串?

正在开发的应用程序托管在iframe中.

我在我的应用程序中配置了以下路由:

    const routes: Routes = [
  {
    path: '',
    pathMatch: 'full',
    redirectTo: 'list'
  },
  {
    path: 'list',
    component: ListComponent,
    canActivate: [CanActivateRoute]
  },
  {
    path: 'dashboard',
    loadChildren: './modules/dashboard/dashboard.module#DashboardModule'
  }
];

@NgModule({
  imports: [RouterModule.forRoot(routes, { enableTracing: true })],
  exports: [RouterModule],
  providers: []
})
export class AppRoutingModule { }
Run Code Online (Sandbox Code Playgroud)

ListComponent,OnInit方法,我用下面的代码来获取查询字符串PARAMS:

this.router.events.subscribe(val => {
      if (val instanceof RoutesRecognized) {
        console.log("val.state.root.firstChild.params: " + val.state.root.firstChild.params);
      }
    }); 
const firstParam: string = this.route.snapshot.queryParamMap.get('id');
Run Code Online (Sandbox Code Playgroud)

这些似乎都不起作用.我申请的网址如下:

https://company.com/#/app-dev/list?id=3

QueryParamMap或者RoutesRecongnized似乎没有在url中获取查询字符串"id = 3".它总是返回null.

任何人都可以帮我如何从角度应用程序中的URL检索查询参数/查询字符串?

query-parameters angular angular7 angular-cli-v7

6
推荐指数
1
解决办法
2471
查看次数

Angular 7和Stripe错误TS2304:找不到名称“ Stripe”

我已经@types/stripe-v3在中的脚本标签中安装了Stripe的javascript文件,并将其包括在内index.html。假定Angular编译器应自动包含@types节点模块中的所有文件。@types/stripe-v3/index.d.ts如果编译器包含该文件,则在Internet上阅读并查看是否有全局声明的var Stripe。从index.d.ts

declare var Stripe: stripe.StripeStatic;
Run Code Online (Sandbox Code Playgroud)

在我的服务文件中,我有以下代码:

import { Injectable } from '@angular/core';
import { environment } from '../environments/environment';

@Injectable({
  providedIn: 'root'
})
export class BetalingService {
  stripe = Stripe(environment.stripeKey);

  constructor() { }

}
Run Code Online (Sandbox Code Playgroud)

导致以下错误:

error TS2304: Cannot find name 'Stripe'.
Run Code Online (Sandbox Code Playgroud)

stripe-payments typescript definitelytyped angular-cli angular-cli-v7

6
推荐指数
2
解决办法
1468
查看次数

Angular CLI 7 Webpack Bundle Analyzer 模块串联

我正在为我的 Angular 7 应用程序运行 Webpack Bundle Analyzer,它产生如下输出:

在此处输入图片说明

根据此处的故障排除部分使用 webpack.optimize.ModuleConcatenationPlugin 时,这是一个已知的警告。他们对 Angular CLI < 6 提出了建议。我也在这里找到了建议注释掉 ModuleConcatenationPlugin 的建议,但是,它没有确定应该在哪里注释掉。

您知道如何修复为 Angular CLI 7.1.0 连接的模块吗?谢谢你的时间。

webpack angular webpack-bundle-analyzer angular7 angular-cli-v7

5
推荐指数
1
解决办法
1274
查看次数