Rollup-plugin-typescript2: ENOENT: tidak ada file atau direktori seperti itu, buka '...?rollup-plugin-vue=script.d.ts'

Dibuat pada 7 Jul 2018  ·  11Komentar  ·  Sumber: ezolenko/rollup-plugin-typescript2

Apa yang terjadi dan mengapa itu salah

Dapatkan kesalahan ini saat menggunakan dengan rollup-plugin-vue saat disetel declaration ke true di tsconfig.json .

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

Repo ke Repro: https://github.com/gluons/rollup-plugin-typescript2-issue-97

Lingkungan

OS: Windows 10
Simpul: v10.4.1
Benang: 1.7.0

Versi

  • naskah: 2.8.4
  • rollup: 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"
  }
}

keluaran plugin dengan verbositas 3

- tambahkan verbositas verbositas: 3 ke opsi plugin dan lampirkan output jika relevan (sensor apa pun yang sensitif) -

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'

Komentar yang paling membantu

Oke, coba master sekarang. Masih ada masalah //# sourceMappingURL= dan .d.ts.map peta itu sendiri yang merujuk nama blok lengkap, yang kemungkinan akan membingungkan beberapa alat.

@znck dapatkah satu file vue berisi beberapa blok TypeScript dan akankah plugin vue mengubahnya menjadi modul virtual terpisah?

Semua 11 komentar

Harus diperbaiki di master sekarang -- Saya mengabaikan deklarasi untuk modul vue untuk saat ini. Pilihan lain adalah memotong semuanya setelah ? dan menulis *.vue.d.ts kurasa.

OKE. Terima kasih. 🙇♀.
Kesalahan ENOENT hilang sekarang.

Saya tidak yakin apakah deklarasi dari file Vue itu penting atau tidak.
Mungkin @znck bisa memberikan pendapat?
Atau pengembang Vue + TypeScript yang melihat masalah ini?

Saya mendapatkan ini juga dengan deklarasi yang disetel ke true. Saya tidak menggunakan plugin vue. Saya pikir ini karena jalur file saya berisi spasi, dilihat dari perbaikan Anda sebelumnya.

@hollyleaves bisakah Anda memposting detail atau membuka kasing terpisah? Spasi harus berupa karakter yang valid.

File deklarasi itu penting.
@ezolenko @gluons Bisakah Anda memberi tahu saya apa yang mencegah pembuatan file deklarasi?

@znck

@ezolenko telah memperbaiki masalah ini sementara di f0e466c89f288f5b7434a513370201ef9da56aff dan deklarasi file Vue akan diabaikan.
Itu tidak ditulis di direktori dist untuk saat ini.

@znck haruskah deklarasi untuk Hello.vue diberi nama Hello.vue.d.ts ? Akankah semua alat mengambilnya dengan benar pada saat itu?

Saya tidak dapat menuliskannya sebagai Hello.vue?rollup-plugin-vue=script.d.ts karena ? adalah karakter yang tidak valid untuk jalur file windows.

Bagian setelah ? adalah untuk mereferensikan blok di file vue, Anda harus menghapusnya. Saya tidak yakin apakah file deklarasi harus diberi nama Hello.d.ts atau Hello.vue.d.ts . ( @ktsn WDYT?)

Mungkin Hello.vue.d.ts ?
Saya tidak yakin bagaimana tampilan final d.ts tetapi karena sebagian besar pengguna TS menulis pernyataan impor untuk SFC dengan ekstensi ( .vue ), file deklarasi mungkin juga memerlukan .vue .

Oke, coba master sekarang. Masih ada masalah //# sourceMappingURL= dan .d.ts.map peta itu sendiri yang merujuk nama blok lengkap, yang kemungkinan akan membingungkan beberapa alat.

@znck dapatkah satu file vue berisi beberapa blok TypeScript dan akankah plugin vue mengubahnya menjadi modul virtual terpisah?

Hanya akan ada satu blok skrip (typescript) per file.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat