Rollup-plugin-typescript2: ENOENT: لا يوجد مثل هذا الملف أو الدليل ، افتح '...؟ rollup-plugin-vue = script.d.ts'

تم إنشاؤها على ٧ يوليو ٢٠١٨  ·  11تعليقات  ·  مصدر: ezolenko/rollup-plugin-typescript2

ماذا يحدث ولماذا هو خطأ

احصل على هذا الخطأ عند الاستخدام مع rollup-plugin-vue عند تعيين declaration إلى true في tsconfig.json .

Error: ENOENT: no such file or directory, open '<path to project directory>\dist\components\Hello.vue?rollup-plugin-vue=script.d.ts'

الريبو إلى Repro: https://github.com/gluons/rollup-plugin-typescript2-issue-97

بيئة

نظام التشغيل: Windows 10
العقدة: v10.4.1
الغزل: 1.7.0

إصدارات

  • مطبوعة: 2.8.4
  • تراكمي: 0.62.0
  • rollup-plugin-typescript2: 0.15.1

rollup.config.js

import { resolve } from 'path';

import ts from 'rollup-plugin-typescript2';
import vue from 'rollup-plugin-vue';

export default {
    input: resolve(__dirname, './src/index.ts'),
    output: [
        {
            file: resolve(__dirname, './dist/hello-plugin.umd.js'),
            format: 'umd',
            sourcemap: true,
            name: 'HelloPlugin',
            globals: {
                vue: 'Vue'
            }
        },
        {
            file: resolve(__dirname, './dist/hello-plugin.es.js'),
            format: 'es',
            sourcemap: true
        }
    ],
    plugins: [
        ts({
            verbosity: 3 // Debug
        }),
        vue()
    ],
    external: ['vue']
};

tsconfig.json

{
    "compilerOptions": {
        "module": "es2015",
        "moduleResolution": "node",
        "target": "es5",
        "lib": [
            "dom",
            "es2015"
        ],
        "esModuleInterop": true,
        "sourceMap": true,
        "declaration": true
    },
    "include": [
        "src"
    ]
}

package.json

{
  "name": "rolup-vue-ts-issue",
  "version": "0.0.0",
  "description": "A repo to repro Rollup + Vue + TypeScript with declaration bundling issue.",
  "private": true,
  "scripts": {
    "prebuild": "rimraf dist/*",
    "build": "rollup -c rollup.config.ts"
  },
  "author": "Saran Tanpituckpong <[email protected]>",
  "license": "UNLICENSED",
  "devDependencies": {
    "@types/node": "8",
    "postcss": "^6.0.23",
    "rimraf": "^2.6.2",
    "rollup": "^0.62.0",
    "rollup-plugin-typescript2": "^0.15.1",
    "rollup-plugin-vue": "^4.3.0",
    "typescript": "~2.8",
    "vue-template-compiler": "^2.5.16"
  },
  "dependencies": {
    "vue": "^2.5.16"
  }
}

إخراج البرنامج المساعد مع الإسهاب 3

- إضافة الإسهاب: 3 إلى خيارات البرنامج المساعد وإرفاق الإخراج إذا كان ذلك مناسبًا (قم بمراقبة أي شيء حساس) -

rpt2: typescript version: 2.8.4
rpt2: tslib version: 1.9.2
rpt2: rollup-plugin-typescript2 version: 0.15.1
rpt2: plugin options:
{
    "verbosity": 3,
    "check": true,
    "clean": false,
    "cacheRoot": "C:\\Users\\Saran\\my-projects\\rolup-vue-ts-issue/.rpt2_cache",
    "include": [
        "*.ts+(|x)",
        "**/*.ts+(|x)"
    ],
    "exclude": [
        "*.d.ts",
        "**/*.d.ts"
    ],
    "abortOnError": true,
    "rollupCommonJSResolveHack": false,
    "typescript": "version 2.8.4",
    "useTsconfigDeclarationDir": false,
    "tsconfigOverride": {},
    "transformers": [],
    "tsconfigDefaults": {}
}
rpt2: rollup config:
{
    "external": [
        "vue",
        "",
        ""
    ],
    "inlineDynamicImports": false,
    "input": "C:\\Users\\Saran\\my-projects\\rolup-vue-ts-issue\\src\\index.ts",
    "chunkGroupingSize": 5000,
    "perf": false,
    "plugins": [
        {
            "name": "rpt2"
        },
        {
            "name": "VuePlugin"
        }
    ],
    "entry": "C:\\Users\\Saran\\my-projects\\rolup-vue-ts-issue\\src\\index.ts"
}
rpt2: built-in options overrides: {
    "noEmitHelpers": false,
    "importHelpers": true,
    "noResolve": false,
    "noEmit": false,
    "inlineSourceMap": false,
    "outDir": "C:\\Users\\Saran\\my-projects\\rolup-vue-ts-issue/.rpt2_cache/placeholder",
    "moduleResolution": 2,
    "declarationDir": "C:\\Users\\Saran\\my-projects\\rolup-vue-ts-issue"
}
rpt2: parsed tsconfig: {
    "options": {
        "module": 5,
        "moduleResolution": 2,
        "target": 1,
        "lib": [
            "lib.dom.d.ts",
            "lib.es2015.d.ts"
        ],
        "esModuleInterop": true,
        "sourceMap": true,
        "declaration": true,
        "noEmitHelpers": false,
        "importHelpers": true,
        "noResolve": false,
        "noEmit": false,
        "inlineSourceMap": false,
        "outDir": "C:\\Users\\Saran\\my-projects\\rolup-vue-ts-issue/.rpt2_cache/placeholder",
        "declarationDir": "C:\\Users\\Saran\\my-projects\\rolup-vue-ts-issue",
        "configFilePath": "C:\\Users\\Saran\\my-projects\\rolup-vue-ts-issue/tsconfig.json"
    },
    "fileNames": [
        "C:/Users/Saran/my-projects/rolup-vue-ts-issue/src/index.ts",
        "C:/Users/Saran/my-projects/rolup-vue-ts-issue/src/sfc.d.ts"
    ],
    "typeAcquisition": {
        "enable": false,
        "include": [],
        "exclude": []
    },
    "raw": {
        "compilerOptions": {
            "module": "es2015",
            "moduleResolution": "node",
            "target": "es5",
            "lib": [
                "dom",
                "es2015"
            ],
            "esModuleInterop": true,
            "sourceMap": true,
            "declaration": true
        },
        "include": [
            "src"
        ]
    },
    "errors": [],
    "wildcardDirectories": {
        "C:/Users/Saran/my-projects/rolup-vue-ts-issue/src": 1
    },
    "compileOnSave": false,
    "configFileSpecs": {
        "includeSpecs": [
            "src"
        ],
        "validatedIncludeSpecs": [
            "src"
        ],
        "wildcardDirectories": {
            "C:/Users/Saran/my-projects/rolup-vue-ts-issue/src": 1
        }
    }
}
rpt2: included:
'[
    "*.ts+(|x)",
    "**/*.ts+(|x)"
]'
rpt2: excluded:
'[
    "*.d.ts",
    "**/*.d.ts"
]'
rpt2: Ambient types:
rpt2:     C:/Users/Saran/my-projects/rolup-vue-ts-issue/src/sfc.d.ts
rpt2:     C:/Users/Saran/my-projects/rolup-vue-ts-issue/node_modules/@types/estree/index.d.ts
rpt2:     C:/Users/Saran/my-projects/rolup-vue-ts-issue/node_modules/@types/node/index.d.ts
rpt2: ambient types changed, redoing all semantic diagnostics
rpt2: transpiling 'C:\Users\Saran\my-projects\rolup-vue-ts-issue\src\index.ts'
rpt2:     cache: 'C:\Users\Saran\my-projects\rolup-vue-ts-issue/.rpt2_cache/022f423b186edc509d0bfc04874ea603a25c1eb2/code/cache/9d9555d93b34027372939bd4a0a4dc41c41e13ac'
rpt2:     cache miss
rpt2:     cache: 'C:\Users\Saran\my-projects\rolup-vue-ts-issue/.rpt2_cache/022f423b186edc509d0bfc04874ea603a25c1eb2/syntacticDiagnostics/cache/9d9555d93b34027372939bd4a0a4dc41c41e13ac'
rpt2:     cache miss
rpt2:     cache: 'C:\Users\Saran\my-projects\rolup-vue-ts-issue/.rpt2_cache/022f423b186edc509d0bfc04874ea603a25c1eb2/semanticDiagnostics/cache/9d9555d93b34027372939bd4a0a4dc41c41e13ac'
rpt2:     cache miss
rpt2: generated declarations for 'C:/Users/Saran/my-projects/rolup-vue-ts-issue/src/index.ts'
rpt2: transpiling 'C:\Users\Saran\my-projects\rolup-vue-ts-issue\src\components\Hello.vue?rollup-plugin-vue=script.ts'
rpt2:     cache: 'C:\Users\Saran\my-projects\rolup-vue-ts-issue/.rpt2_cache/022f423b186edc509d0bfc04874ea603a25c1eb2/code/cache/53ea992621b40f9ced3a2ea5f2f0b86e2cb028b1'
rpt2:     cache miss
rpt2:     cache: 'C:\Users\Saran\my-projects\rolup-vue-ts-issue/.rpt2_cache/022f423b186edc509d0bfc04874ea603a25c1eb2/syntacticDiagnostics/cache/53ea992621b40f9ced3a2ea5f2f0b86e2cb028b1'
rpt2:     cache miss
rpt2:     cache: 'C:\Users\Saran\my-projects\rolup-vue-ts-issue/.rpt2_cache/022f423b186edc509d0bfc04874ea603a25c1eb2/semanticDiagnostics/cache/53ea992621b40f9ced3a2ea5f2f0b86e2cb028b1'
rpt2:     cache miss
rpt2: generated declarations for 'C:/Users/Saran/my-projects/rolup-vue-ts-issue/src/components/Hello.vue?rollup-plugin-vue=script.ts'
rpt2: generating target 1
rpt2: rolling caches
rpt2: writing declarations for 'C:/Users/Saran/my-projects/rolup-vue-ts-issue/src/index.ts' to 'C:\Users\Saran\my-projects\rolup-vue-ts-issue\dist\index.d.ts'
rpt2: writing declarations for 'C:/Users/Saran/my-projects/rolup-vue-ts-issue/src/components/Hello.vue?rollup-plugin-vue=script.ts' to 'C:\Users\Saran\my-projects\rolup-vue-ts-issue\dist\components\Hello.vue?rollup-plugin-vue=script.d.ts'

التعليق الأكثر فائدة

حسنًا ، جرب المعلم الآن. لا تزال هناك مشكلة تتعلق بخريطة خريطة //# sourceMappingURL= وخريطة d.ts نفسها التي تشير إلى اسم الكتلة بالكامل ، مما قد يؤدي إلى إرباك بعض الأدوات.

znck هل يمكن أن يحتوي ملف vue واحد على العديد من الكتل المطبوعة وسوف يقوم البرنامج المساعد vue بتحويلها إلى وحدات افتراضية منفصلة؟

ال 11 كومينتر

يجب إصلاحه في المستوى الرئيسي الآن - أنا أتجاهل الإعلانات الخاصة بوحدات vue في الوقت الحالي. خيار آخر هو قطع كل شيء بعد؟ واكتب *.vue.d.ts ما أعتقد.

نعم. شكرا لك. 🙇‍♀
ذهب خطأ كاف الآن.

لست متأكدًا مما إذا كان الإعلان من ملف Vue مهمًا أم لا.
ربما يمكن znck إبداء الرأي؟
أو أي مطور Vue + TypeScript يرى هذه المشكلة؟

أحصل على هذا أيضًا مع إعلان تم ضبطه على "صحيح". أنا لا أستخدم المكون الإضافي vue بالرغم من ذلك. أعتقد أن هذا لأن مسار الملف الخاص بي يحتوي على مسافة ، بناءً على الإصلاح السابق.

hollyleaves هل يمكنك نشر التفاصيل أو فتح حالة منفصلة؟ يجب أن تكون المسافة حرفًا صالحًا.

ملفات التصريح مهمة.
ezolenkogluons هل يمكن أن تخبرني ما الذي يمنع إنشاء ملفات التصريح؟

تضمين التغريدة

قام ezolenko بإصلاح هذه المشكلة مؤقتًا في f0e466c89f288f5b7434a513370201ef9da56aff وسيتم تجاهل إعلان ملف Vue.
لم يتم كتابته في دليل التوزيع في الوقت الحالي.

يجب أن يعلنznck عن Hello.vue Hello.vue.d.ts ؟ هل ستلتقطها جميع الأدوات بشكل صحيح في ذلك الوقت؟

لا يمكنني كتابتها كـ Hello.vue?rollup-plugin-vue=script.d.ts لأن ? حرف غير صالح لمسارات ملفات Windows.

جزء بعد ? للإشارة إلى كتلة في ملف vue ، يجب إزالته. لست متأكدًا مما إذا كان يجب تسمية ملف الإقرار Hello.d.ts أم Hello.vue.d.ts . ( @ ktsn WDYT؟)

ربما Hello.vue.d.ts ؟
لست متأكدًا من الشكل الذي يبدو عليه الناتج النهائي d.ts ولكن نظرًا لأن معظم مستخدمي TS يكتبون بيانات الاستيراد لـ SFC بالامتداد ( .vue ) ، فقد يحتاج ملف الإقرار أيضًا إلى .vue .

حسنًا ، جرب المعلم الآن. لا تزال هناك مشكلة تتعلق بخريطة خريطة //# sourceMappingURL= وخريطة d.ts نفسها التي تشير إلى اسم الكتلة بالكامل ، مما قد يؤدي إلى إرباك بعض الأدوات.

znck هل يمكن أن يحتوي ملف vue واحد على العديد من الكتل المطبوعة وسوف يقوم البرنامج المساعد vue بتحويلها إلى وحدات افتراضية منفصلة؟

لن يكون هناك سوى كتلة نصية واحدة (مطبوعة) لكل ملف.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات