组件装饰器的 vue-loader 解析错误

Posted

技术标签:

【中文标题】组件装饰器的 vue-loader 解析错误【英文标题】:vue-loader parse error for component decorator 【发布时间】:2018-11-27 10:25:38 【问题描述】:

我在使用 vue、typescript、webpack 和组件装饰器时遇到问题。

这是错误

./app/modules/popin-ratings-reviews/templates/HelloWorld.vue?vue&type=script&lang=ts (./node_modules/vue-loader/lib??vue-loader-options!./app/ 中的错误模块/popin-ratings-reviews/templates/HelloWorld.vue?vue&type=script&lang=ts) 10:0 模块解析失败:意外字符“@”(10:0) 您可能需要适当的加载程序来处理此文件类型。 |从'vue-property-decorator'导入组件,道具,Vue; | @零件 |导出默认类 HelloWorld 扩展 Vue |消息='你好世界'; @ ./app/modules/popin-ratings-reviews/templates/HelloWorld.vue?vue&type=script&lang=ts 1:0-130 1:146-149 1:151-278 1:151-278 @ ./app/modules/popin-ratings-reviews/templates/HelloWorld.vue @ ./app/modules/popin-ratings-reviews/index.m.ts

webpack vue-loader 似乎无法解析组件装饰器语法。 我该如何解决?

【问题讨论】:

我刚刚遇到了同样的问题。您已经找到解决方案了吗? 是的,我把它放在下面的评论中 【参考方案1】:

我找到了解决办法

这是我使用的 webpack 规则的配置,它正在工作

rules: [
  
    test: /\.tsx?$/,
    exclude: [
      /node_modules/
    ],
    use: 
      loader: "ts-loader",
      options: 
        appendTsSuffixTo: [/\.vue$/]
      
    
  ,
  
    test: /\.vue$/,
    use: 
      loader: "vue-loader"
    
  
  ...

【讨论】:

【参考方案2】:

我认为更多的是在 babel 插件方面/--experimentalDecorators 标记您遇到问题的地方。

必需:ECMAScript 阶段 1 装饰器。如果你使用 Babel, 需要 babel-plugin-transform-decorators-legacy。如果你使用 TypeScript,启用 --experimentalDecorators 标志。

它不支持 stage 2 装饰器,因为它是主流 转译器仍然转译为旧的装饰器。

这似乎是您正在寻找的。 https://github.com/vuejs/vue-class-component

【讨论】:

以上是关于组件装饰器的 vue-loader 解析错误的主要内容,如果未能解决你的问题,请参考以下文章

ES2017 NEST JS @IsEmpty 在作为表达式调用时无法解析属性装饰器的签名。此表达式不可调用。不为空

vue的.vue文件是怎么run起来的(vue-loader)

默认解析器的身份验证/授权

Angular 2:异步显示依赖于解析器的子组件

vue-loader 源码解析系列之 整体分析

Spring MVC学习—ViewSolvsolver视图解析器的详细介绍与使用案例