คำเตือนมัณฑนากรตกแต่งภายในในการรวบรวม TypeScript


248

ฉันได้รับคำเตือน ...

การสนับสนุนการทดลองสำหรับนักตกแต่งเป็นคุณสมบัติที่อาจมีการเปลี่ยนแปลงในรุ่นอนาคต ตั้งค่าตัวเลือก 'TrialDecorators' เพื่อลบคำเตือนนี้

... แม้ว่าคอมไพเลอร์ตัวเลือกของฉันใน tsconfig.json มีการตั้งค่าต่อไปนี้:

"emitDecoratorMetadata": true,
"experimentalDecorators": true,

สิ่งที่แปลกคือบางชั้นเรียนแบบสุ่มที่ใช้มัณฑนากรไม่แสดงคำเตือน แต่ส่วนที่เหลือในโครงการเดียวกันทำ

สิ่งที่อาจทำให้เกิดพฤติกรรมดังกล่าวในคอมไพเลอร์ TypeScript?


19
คุณลองรีสตาร์ท VS Code แล้วหรือยัง ฉันพบว่าจำเป็นหลังจากทำการเปลี่ยนแปลง tsconfig.json ในบางครั้ง
David Sherret

2
คุณสามารถลองระเบิดคำตอบเพื่อน มันใช้งานได้สำหรับฉัน! stackoverflow.com/a/38970591/2468781
eildiz

10
โดยบังเอิญหากบุคคลอื่นพบสิ่งนี้ที่ใช้ VS Professional ไม่ใช่รหัส VS คุณอาจเพิ่ม.tsไฟล์ลงในโครงการเชิงมุมด้วยตนเอง ถ้าเป็นเช่นนั้นการรวบรวม TS เริ่มต้นจะขัดแย้งกับ Angular CLI คลิกขวาที่ไฟล์ -> Properties -> Build Action: None จากนั้นรีสตาร์ท VS หากจำเป็น
pbarranis

2
การรีสตาร์ทรหัส VS ช่วยฉันแก้ปัญหาได้
CMA

4
ฉันเริ่มต้น VSCode ( code .) ในไดเรกทอรีที่ไม่ถูกต้อง ทุกอย่างดูโอเค - ฉันเห็นและสามารถแก้ไขไฟล์ทั้งหมดของฉัน - ดังนั้นในตอนแรกฉันไม่ได้สังเกตว่ามีอะไรผิดปกติ แต่ฉันได้รับการเตือนว่า "ผู้ตกแต่งห้องทดลอง" โง่ ๆ ในที่เดียว - และอันเดียวเท่านั้น! - องค์ประกอบเชิงมุม ผมเดินออกมาจาก VSCode, เริ่มต้นใหม่ ( code .อีกครั้ง) ในที่ถูกต้องไดเรกทอรี (root โครงการเชิงมุมของฉัน) .. และเตือนหายไป
paulsm4

คำตอบ:


219

แม้ว่า VS Code เป็นตัวแก้ไขที่ยอดเยี่ยมสำหรับโปรเจ็กต์ของ TypeScript แต่ก็ต้องมีการเตะเป็นระยะ ๆ บ่อยครั้งที่ไม่มีการเตือนไฟล์บางไฟล์ทำให้เกิดความผิดปกติและบ่น tsconfig.jsonส่วนใหญ่การแก้ไขน่าจะเป็นในการบันทึกและปิดไฟล์ที่เปิดอยู่ทั้งหมดแล้วเปิด หลังจากนั้นคุณควรจะสามารถเปิดไฟล์ที่ละเมิดอีกครั้งโดยไม่มีข้อผิดพลาด หากไม่ได้ผลให้ล้างออกแล้วทำซ้ำ

หากคุณtsconfig.jsonระบุไฟล์ต้นฉบับโดยใช้filesอาร์เรย์ IntelliSense จะทำงานได้อย่างถูกต้องหากไฟล์ที่เป็นปัญหานั้นมีการอ้างอิงเช่นนั้นรหัส VS สามารถค้นหาได้โดยการข้ามผ่านแผนผังไฟล์อินพุต

แก้ไข: คำสั่ง 'หน้าต่างโหลดซ้ำ' (เพิ่มวัยมาแล้ว) ควรแก้ปัญหานี้ทันทีและสำหรับทั้งหมด


5
ขอขอบคุณ - ลบ "ไฟล์" ออกจาก tsconfig.json แก้ปัญหา
bensiu

4
คำตอบนั้นไม่เกี่ยวข้องกับกรณีของฉัน แต่ช่วยฉันแก้ปัญหาของฉันได้ ฉันใช้ VS 2015 ระหว่างการเปลี่ยนแปลงxprojและtsconfigไฟล์ฉันคิดถึงความจริงที่ว่าโฟลเดอร์ที่มีไฟล์สคริปต์ของฉันได้รับการระบุไว้ในส่วนของexclude tsconfigหวังว่านี่จะช่วยใครซักคน
Stefan Balan

18
ไฟล์> ปิดโฟลเดอร์> เปิดโฟลเดอร์ใช้งานได้สำหรับฉัน สิ่งนี้เกิดขึ้นหลังจากฉันรีสตาร์ทเครื่องโดยไม่ปิด vscode อย่างถูกต้อง
Adrian Moisa

3
ถ้าฉันไม่ได้ใช้ typescript ล่ะ เฉพาะจาวาสคริปต์ es6?
DDD

3
ฉันไม่แน่ใจว่าเมื่อมันถูกเพิ่มเข้ามา แต่ตอนนี้พาเล็ตคำสั่งมี "หน้าต่างโหลดใหม่" ซึ่งเหมาะสำหรับสิ่งประเภทนี้
Coderer

184

ฉันจะเพิ่มต่อไปนี้ในไฟล์ settings.json ของ vscode เพื่อลบคำเตือน

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode -> Preferences -> Settings

ป้อนคำอธิบายรูปภาพที่นี่


ขอบคุณมาก. ฉันกำลังใช้ตัวตกแต่ง es6 + และยังไม่ได้ติดตั้งตัวพิมพ์ น่ากลัว
Akhmedzianov Danilian

3
คำตอบนี้ดีที่สุดเนื่องจากไม่จำเป็นต้องสร้างไฟล์แยกในโครงการเพื่อแก้ปัญหา VSCode
Rodrigo

ctrl + ,ปุ่มลัดเพื่อเปิดการตั้งค่าผู้ใช้ ในการตั้งค่าผู้ใช้คลิก 3 จุด ( ...) จากนั้นคลิกป๊อปอัปOpen settings.jsonเพื่อเปิดsettings.json
suhailvs

ขอบคุณมาก. มีประโยชน์มาก
an0nh4x0r

102

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณเลือกโฟลเดอร์ "src" สำหรับโฟลเดอร์เวิร์กสเปซของคุณ

เมื่อเลือกโฟลเดอร์รูทโฟลเดอร์ที่เลือกตำแหน่ง "src", "node_modules" ข้อผิดพลาดจะหายไป


9
มาที่นี่เพื่อโพสต์นี้ สิ่งนี้แก้ไขได้สำหรับฉัน ฉันใช้ Angular 2 ผ่าน Angular CLI
async

ในกรณีข้างต้นไม่สามารถเข้าใจได้: Vscode จะต้องโหลดโฟลเดอร์ที่ไฟล์ config นั้นต้องรู้เกี่ยวกับมัน หากคุณต้องการที่จะโหลด folde ต่อไปฉันคิดว่าคุณสามารถเขียนไฟล์ config ใหม่ที่จะใช้ได้จากโฟลเดอร์นั้นและด้านล่าง
LosManos

นั่นมัน ขอบคุณ :)
Kamil

45

ไฟล์ -> การตั้งค่า -> การตั้งค่า


สำหรับฉันปัญหาปรากฏในรุ่น 1.37 และวิธีการแก้ปัญหาของคุณแก้ไขได้
เตฟาน


25

ต้องเพิ่มtypescript.tsdkในของฉัน.vscode/settings.json:

"typescript.tsdk": "node_modules/typescript/lib"

5
สิ่งนี้แก้ไขปัญหาให้ฉันได้ แต่บรรทัดนั้นจะเป็นไป.vscode/settings.jsonตามนี้
Fran Rodriguez

1
แก้ไขให้ฉันด้วย แต่ฉันไม่ได้มี.vscodeโฟลเดอร์ (ฉันไม่รู้ว่าทำไม - ฉันเป็นแบ็กเอนด์ dev ปล่อยให้ฉันอยู่คนเดียว!) ดังนั้นฉันจึงสร้างหนึ่งในโฟลเดอร์รากด้วยsettings.jsonไฟล์ดังกล่าว
Aage

17

ใน VSCode ให้ไปที่ไฟล์ => การตั้งค่า => การตั้งค่า (หรือการควบคุม + เครื่องหมายจุลภาค) และมันจะเปิดไฟล์การตั้งค่าผู้ใช้ ค้นหา "javascript.implicitProjectConfig.experimentalDecorators": true จากนั้นทำเครื่องหมายที่ช่องทำเครื่องหมายสำหรับตัวทดลองทดลองกับตัวแปลงไฟล์และควรแก้ไข มันทำเพื่อฉัน

ป้อนคำอธิบายรูปภาพที่นี่


12

ใน Visual Code Studio ไปที่ไฟล์ >> การตั้งค่า >> การตั้งค่าค้นหา "มัณฑนากร" ในช่องค้นหาและตรวจสอบตัวเลือกเช่นเดียวกับในภาพ ป้อนคำอธิบายรูปภาพที่นี่


11

เปิดsettings.jsonไฟล์ในตำแหน่งต่อไปนี้<project_folder>/.vscode/settings.json

หรือคุณสามารถเปิดไฟล์จากเมนูตามที่ระบุไว้ด้านล่าง

VSCode -> File -> Preferences -> Workspace Settings

การตั้งค่าตัวถอดรหัสแบบทดลอง

จากนั้นเพิ่มบรรทัดต่อไปนี้ในsettings.jsonไฟล์

{
    "typescript.tsdk": "node_modules/typescript/lib",
    "enable_typescript_language_service": false
}

นั่นคือทั้งหมดที่ คุณจะไม่เห็นคำเตือน / ข้อผิดพลาดเกี่ยวกับ ' TrialDecorators '


11
ฉันได้รับ "การตั้งค่าที่ไม่รู้จัก" หลังจากเพิ่ม "enable_typescript_language_service" โดยใช้ vscode 1.8.1
David Cheung

5
นี่คือคำแนะนำที่น่ายินดีถ้าโครงการของคุณใช้ typescript!
paulsm4

1
การปิดการใช้งาน "enable_typescript_language_service" จะเป็นการปิดการทำงานของ TypeScript linting อย่างมีประสิทธิภาพโปรดหลีกเลี่ยงข้อเสนอแนะนี้
Jessy

10

คำตอบนี้มีไว้สำหรับคนที่กำลังใช้Javascriptโครงการและไม่ได้เป็นtypescriptหนึ่ง แทนที่จะใช้ไฟล์tsconfig.jsonคุณสามารถใช้ไฟล์jsconfig.json

ในกรณีที่มีการแจ้งเตือนการตกแต่งคุณต้องเขียนภายในไฟล์:

{
    "compilerOptions": {
        "experimentalDecorators": true
    }
}

เสริมการทำงานของ buggy ที่ขอให้ดีกว่าเสมอเพื่อระบุ "รวม" ในไฟล์กำหนดค่าและเริ่มต้นตัวแก้ไขใหม่ เช่น

{
    "compilerOptions": {
        "target": "ES6",
        "experimentalDecorators": true
    },
    "include": [
        "app/**/*"
    ],
    "exclude": [
        "node_modules"
    ]
}


9

เพิ่มบรรทัดต่อไปนี้ใน tsconfig.json และรีสตาร์ทรหัส VS

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "target": "es5",
        "allowJs": true
    }
}

การรีสตาร์ทเป็นกุญแจสำคัญสำหรับฉัน ขอบคุณ
rynop

9

ไม่ควรปฏิเสธ แต่ควรเพิ่มสิ่งต่อไปนี้

  • การตั้งค่าพื้นที่ทำงานไม่ใช่การตั้งค่าผู้ใช้

ภายใต้ไฟล์ >> ค่ากำหนด >> การตั้งค่า

"javascript.implicitProjectConfig.experimentalDecorators": จริง

ปัญหานี้แก้ไขได้สำหรับฉันและฉันลองใช้คำแนะนำเล็กน้อยที่ฉันพบที่นี่และที่อื่น ๆ


7

ฉันมีปัญหานี้เมื่อเร็ว ๆ นี้ภายใต้ Visual Studio 2017 - เปิดออกมันก็เกิดจาก "คุณสมบัติ" ของ VS - ละเลย tsconfig.json เมื่อมีการกระทำรูปร่างไม่ได้ตั้งค่าไปยังเนื้อหา

ดังนั้นการเปลี่ยนการดำเนินการ Build เป็นเนื้อหาและโหลดโซลูชันใหม่เพื่อแก้ไขปัญหา


4

เพื่อความชัดเจนและโง่เขลา

1) เปิด. vscode / settings.json

2) เพิ่ม "typescript.tsdk": "node_modules / typescript / lib" บนมัน

3) บันทึก

4) รีสตาร์ท Visual Studio Code


4

หากคุณกำลังทำงานใน Visual Studio คุณสามารถลองแก้ไขได้

  1. ยกเลิกการโหลดโครงการของคุณจาก visual studio
  2. ไปที่โฮมไดเรกทอรีของโครงการและเปิดไฟล์ "csproj"
  3. เพิ่ม TypeScriptExperimentalDecorators ในส่วนนี้ตามที่แสดงในภาพ

    ป้อนคำอธิบายรูปภาพที่นี่

    1. โหลดโครงการใน Visual Studio

ดูรายละเอียดเพิ่มเติมได้ที่นี้ที่ตั้ง


4

หากคุณใช้ไฟล์ cli เพื่อคอมไพล์ไฟล์ * .ts คุณสามารถตั้งค่า TrialDecorators โดยใช้คำสั่งต่อไปนี้:

 tsc filename.ts --experimentalDecorators "true"

ขอบคุณสิ่งนี้ช่วยฉันประหยัด ฉันมีการตั้งค่าเช่นเดียวกับผู้ถาม แต่ฉันใช้Sublime Text 3และโซลูชันของคุณได้พิสูจน์แล้วว่ามีประโยชน์!
Irfandy Jip

4

โปรดตรวจสอบว่าคุณได้คัดค้าน VS Code ในโฟลเดอร์ของโครงการทั้งหมดและไม่เพียง แต่โฟลเดอร์ src เพราะถ้าคุณเปิดเฉพาะ src ไฟล์ ts.config.json (อยู่ในโฟลเดอร์โครงการ) จะไม่อยู่ในขอบเขตและ VS จะไม่รู้จักพารามิเตอร์ของเครื่องมือตกแต่งภายใน

ในกรณีของฉันนี้แก้ไขปัญหาทั้งหมดที่เกี่ยวข้องกับปัญหานี้


นี่ก็เป็นปัญหาของฉันเช่นกัน คุณเห็น node_modules ไหม คุณเห็น tsconfig.json ไหม ถ้าไม่ได้เปิดหน้าต่าง vsCode ใหม่ใกล้หน้าต่างเก่าเลือกไฟล์ -> เปิดโฟลเดอร์และให้แน่ใจว่าคุณเลือกโฟลเดอร์แม่ของsrcและแทนที่จะเลือกเพียงnode_modules src
Kyle Vassella


2

เปิดโฟลเดอร์ของโครงการทั้งหมดแทน project-name / src

tsconfig.json ไม่อยู่ในโฟลเดอร์ src



1

คุณอาจพบปัญหานี้หากคุณเปิดไฟล์ TS ที่มีอยู่นอกโครงการ เช่นฉันใช้ lerna และเปิดไฟล์จากแพ็คเกจอื่น แม้ว่าแพคเกจอื่นนั้นมี tsconfig ของตัวเองกับผู้ตกแต่งทดลอง VsCode ไม่ให้เกียรติ


1

ฉันประสบปัญหาเดียวกันในขณะที่สร้างInjectable Services ใน Angular 2 ฉันมีทุกสิ่งใน tsconfig.json ยังคงฉันได้รับข้อผิดพลาดที่บรรทัด ColorsImmutable

@Injectable()
export class ColorsImmutable {

และแก้ไขคือการลงทะเบียนบริการที่ระดับโมดูลหรือระดับส่วนประกอบโดยใช้อาร์เรย์ผู้ให้บริการ

providers:[ColorsImmutable ],

1

หากคุณใช้ Deno JavaScript และรันไทม์ TypeScript และคุณเปิดใช้งาน TrialDecorators: true ใน tsconfig.json หรือการตั้งค่า VSCode ide มันจะไม่ทำงาน ตามข้อกำหนดของ Deno คุณต้องระบุ tsconfig เป็นแฟล็กเมื่อรันไฟล์ Deno ดูตัวเลือกคอมไพเลอร์ TypeScript ที่กำหนดเอง

ในกรณีของฉันโดยเฉพาะฉันใช้การทดสอบ Deno และใช้งาน

$ deno test -c tsconfig.json

ถ้าเป็นไฟล์คุณมีสิ่งที่ชอบ

 $ deno run -c tsconfig.json mod.ts

tsconfig.json ของฉัน

{
  "compilerOptions": {
    "allowJs": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "module": "esnext"
  }
}

ฉันทำสิ่งนี้ไปแล้วและยังไม่มีโชคเพราะพวกเขาระบุไว้ในฟีเจอร์การทดลองของเอกสารจะไม่ทำงาน
Ezzabuzaid

มันจะทำงาน. ดูคำตอบที่อัปเดตเกี่ยวกับเนื้อหาของ tsconfig.json ของฉัน จากนั้นดูลิงค์นี้github.com/manyuanrong/dso/issues/18
tksilicon



0

ดังนั้นปรากฎว่าคุณสามารถแก้ไขได้โดยการจับคู่ชื่อโมดูลกับชื่อไฟล์ หากคุณมีชื่อโมดูล BankSpecialtyModule ดังนั้นชื่อไฟล์ควรเป็น ธนาคาร specialty.module.ts


0

ฉันพบข้อผิดพลาดนี้เมื่อฉันสร้างโมดูลใหม่และย้ายไฟล์ * .module.ts และ * -routing.module.ts ไปยังโฟลเดอร์อื่น หลังจากที่ฉันลบทั้งสองไฟล์และสร้างโมดูลในโฟลเดอร์ใหม่มันทำงานได้อย่างสมบูรณ์ Environment Angular เวอร์ชัน 9 และ Angular CLI เวอร์ชัน 9.1.0

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.