vuejs / vetur

Vue tooling for VS Code.
https://vuejs.github.io/vetur/
MIT License
5.75k stars 594 forks source link

`experimentalDecorators: true` in tsconfig.json is not working #567

Closed JounQin closed 6 years ago

JounQin commented 6 years ago

Info

Problem

message: 'Experimental support for decorators is a feature that is subject to change in a future release. Set the 'experimentalDecorators' option to remove this warning.'

I've add and enable experimentalDecorators option in tsconfig.json, and I tried decorator in pure .ts file, there was no warnings.

Reproducible Case

My source code:

<template lang="pug">
  #app
    router-view
</template>
<script lang="ts">
import { Component, Vue } from 'vue-property-decorator'

@Component
export default class App extends Vue {
  name = 'app'
}
</script>
HerringtonDarkholme commented 6 years ago

I cannot reproduce this, can you provide a repo?

JounQin commented 6 years ago

If you don't mind, you can checkout https://github.com/JounQin/Rubick/blob/master/src/views/landing/Login.vue for more details.

HerringtonDarkholme commented 6 years ago

I cloned the repo and it works fine. You can try reloading editor.

screen shot 2017-12-04 at 10 04 41 am
JounQin commented 6 years ago

@HerringtonDarkholme Oops, it really works today, but custom options for Vue plugin still does not work.

jietu20171204-102453 2x

There declarations are all in src/types/shim.d.ts, which makes them work in pure .ts file and can passthrough webpack's building step.

HerringtonDarkholme commented 6 years ago

@JounQin I still cannot reproduce. Clicking on $v directs me to shim.d.ts.

JounQin commented 6 years ago

Hmmm... I restarted my Mac and it works just well now, so magically.

JounQin commented 6 years ago

@HerringtonDarkholme It seems if I modify global .d.ts file, vetur will not recognize that unless exiting and restarting vsc.

So is it as expected and should be documented?

TheAkio commented 6 years ago

I'm not sure if this is an issue of the language server or the VSCode plugin, but it doesn't work when you have a Workspace open. There is a workaround tho: Simply add a tsconfig.json to the workspace directory with the proper configuration. Then this will fix the issue in workspaces.

aboutqx commented 6 years ago

Still not working in a vue file with tsconfig "experimentalDecorators": true, "allowJs": true, and vscode config "javascript.implicitProjectConfig.experimentalDecorators": true ,even with restart.

TheAkio commented 6 years ago

The issue is tracked here: https://github.com/vuejs/vetur/issues/424

yang-ml commented 5 years ago

Actually, I'm still confused with the cause of this issue, but set "include" path in tsconfig.json is working for me.

Before:

"include": [
    // "src/**/*.ts"
  ]

image

Worked After:

{
  "compileOnSave": true,
  "compilerOptions": {
    "module": "esnext",
    "moduleResolution": "node",
    "target": "es5",
    "lib": ["dom", "es2015", "es2016"],
    "sourceMap": false,
    "declaration": true,
    "experimentalDecorators": true,
    "jsx": "react",
    "outDir": "lib",
    "noUnusedLocals": false 
  },
  "exclude": [
    "node_modules",
    "static",
    "lib"
  ],
  "include": [
    "src/**/*.ts"
  ]
}

I'm happy if somebody can point out my mistakes in the config file.

octref commented 5 years ago

include tells Vetur to load the specified files with the compilerOptions you have given. Not specifying it falls back to using the default compilerOptions which doesn't set experimentalDecorators.

flatcoke commented 5 years ago

It was not resolved by any of the above solutions, but it was fixed by updating vscode to the latest version.

vguleaev commented 5 years ago

It was not resolved by any of the above solutions, but it was fixed by updating vscode to the latest version.

I have latest version but I still can see the error when I do export default @observer class MyPageName

Pablofr10 commented 4 years ago

I just put "experimentalDecorators": true in tsconfig.json

yoyo930021 commented 4 years ago

I just put "experimentalDecorators": true in tsconfig.json

If you set, please restart VSCode. Still have problems, please open a new issue with template.

Pablofr10 commented 4 years ago

I just put "experimentalDecorators": true in tsconfig.json

If you set, please restart VSCode. Still have problems, please open a new issue with template.

It's solved my problem. 🤗🤗

anilanar commented 3 years ago

For majority of you, it's caused by

include: "src/**/*.ts"

It needs to be without .ts extension.

include: "src/**/*"
edilsonalvarado commented 1 year ago

Actually, I'm still confused with the cause of this issue, but set "include" path in tsconfig.json is working for me.

Before:

"include": [
    // "src/**/*.ts"
  ]

image

Worked After:

{
  "compileOnSave": true,
  "compilerOptions": {
    "module": "esnext",
    "moduleResolution": "node",
    "target": "es5",
    "lib": ["dom", "es2015", "es2016"],
    "sourceMap": false,
    "declaration": true,
    "experimentalDecorators": true,
    "jsx": "react",
    "outDir": "lib",
    "noUnusedLocals": false 
  },
  "exclude": [
    "node_modules",
    "static",
    "lib"
  ],
  "include": [
    "src/**/*.ts"
  ]
}

I'm happy if somebody can point out my mistakes in the config file.

It worked. It's strange because I was working and suddenly error appeared. Thanks a lot.