【问题标题】:EXCEPTION: Error: Uncaught (in promise): Expected 'styles' to be an array of strings例外:错误:未捕获(承诺):预期“样式”是字符串数组
【发布时间】:2023-04-05 13:19:01
【问题描述】:

我正在研究 angular2 "2.0.0-rc.1" 但是 zoneJS 给出了以下错误

Error: Uncaught (in promise): Expected 'styles' to be an array of strings.
    at resolvePromise (zone.js:538)
    at zone.js:515
    at ZoneDelegate.invoke (zone.js:323)
    at Object.NgZoneImpl.inner.inner.fork.onInvoke (eval at <anonymous> (vendor.js:335), <anonymous>:45:41)
    at ZoneDelegate.invoke (zone.js:322)
    at Zone.run (zone.js:216)
    at zone.js:571
    at ZoneDelegate.invokeTask (zone.js:356)
    at Object.NgZoneImpl.inner.inner.fork.onInvokeTask (eval at <anonymous> (vendor.js:335), <anonymous>:36:41)
    at ZoneDelegate.invokeTask (zone.js:355)

我的代码如下

let styles   = require('./dashboard.css');
let template = require('./dashboard.html');
declare var zingchart:any;

@Component({
  selector: 'dashboard',
  directives: [ RouterLink, CORE_DIRECTIVES, FORM_DIRECTIVES ],
  template: template,
  styles: [ styles ]
})

【问题讨论】:

  • 你能显示一下代码吗?

标签: angular zone zonejs


【解决方案1】:

如果您没有为您的 css 文件定义加载器,则会出现此错误。
检查你是否在 webpack-configuration 中设置了一个模块加载器,如下所示:

loaders: [
  {
    test: /\.css$/,
    loader: 'raw'
  }
  // ...
]

如果没有 css 文件的加载器,Webpack 将不会选择文件,并且会引发此错误。
如果尚未包含在您的依赖项中,您需要使用 npm install --save-dev raw-loader 将 raw-loader 添加到您的开发依赖项中。 如果您使用静态 css 文件并且不需要任何处理当然可以使用styleUrls
要使用 sass,您需要使用这种方式来加载样式,并且可以使用加载器 raw!sass/\.scss$/

【讨论】:

    【解决方案2】:

    试试这个: 让样式 = String(require('./dashboard.css'));

    它对我有用。 由于样式需要一个字符串[],因此将样式解析为 String()。

    【讨论】:

      【解决方案3】:

      错误很明显。定义组件时,styles 属性应该是数组而不是字符串。

      查看文档:https://angular.io/docs/ts/latest/guide/component-styles.html

      编辑:如果您想使用 .css 文件,您应该使用 styleUrls 属性并指向您的文件。

      【讨论】:

      • 但我也在做同样的事情。
      • 不,我的朋友,我们可以使用样式中的变量来分配它
      • 您可以为所欲为,但styleUrls 是正确的做法。
      • 是的,你是正确的朋友,正在工作,但为什么不这样做。
      【解决方案4】:

      我认为您对组件中的styles 属性进行了错误配置。这应该是这样的:

      @Component({
        (...)
        styles: [`
          .card {
            height: 70px;
            width: 100px;
          }
        `]
      })
      

      查看此链接了解更多详情:

      编辑

      如果您想包含 CSS 文件,请使用以下代码:

      @Component({
        (...)
        styleUrls: ['css/style.css']
      })
      

      【讨论】:

      • require 加载模块或 JSON 文件。 CSS 文件不是这种情况。它不会得到一个字符串,而是一个对象......
      • 在你的情况下,我认为 styleUrls 属性是你正在寻找的......我更新了我的答案。
      猜你喜欢
      • 2018-02-09
      • 2020-01-06
      • 2017-05-21
      • 1970-01-01
      • 1970-01-01
      • 2022-12-19
      • 1970-01-01
      • 1970-01-01
      • 2018-11-05
      相关资源
      最近更新 更多