Rollup-plugin-typescript2: Fehler im Überwachungsmodus für Nicht-TypeScript-Dateien

Erstellt am 23. Sept. 2017  ·  22Kommentare  ·  Quelle: ezolenko/rollup-plugin-typescript2

Ich importiere Lenkervorlagendateien, die von der Diagnose ignoriert werden sollen.

Error: Could not find file: '/Users/mohamed/project/src/Views/Shared/spaces.hbs'.
    at getValidSourceFile (/Users/mohamed/project/node_modules/typescript/lib/typescript.js:91281:23)
    at Object.getSyntacticDiagnostics (/Users/mohamed/project/node_modules/typescript/lib/typescript.js:91504:52)
    at /Users/mohamed/project/node_modules/rollup-plugin-typescript2/dist/rollup-plugin-typescript2.cjs.js:629:74
    at /Users/mohamed/project/node_modules/rollup-plugin-typescript2/dist/rollup-plugin-typescript2.cjs.js:325:80
    at arrayEach (/Users/mohamed/project/node_modules/rollup-plugin-typescript2/node_modules/lodash/lodash.js:537:11)
    at Function.forEach (/Users/mohamed/project/node_modules/rollup-plugin-typescript2/node_modules/lodash/lodash.js:9359:14)
    at TsCache.walkTree (/Users/mohamed/project/node_modules/rollup-plugin-typescript2/dist/rollup-plugin-typescript2.cjs.js:325:9)
    at Object.ongenerate (/Users/mohamed/project/node_modules/rollup-plugin-typescript2/dist/rollup-plugin-typescript2.cjs.js:628:17)
    at bundle.plugins.forEach.plugin (/Users/mohamed/project/node_modules/rollup/dist/rollup.js:10507:16)
    at Array.forEach (<anonymous>)

Alle 22 Kommentare

Importierst du sie? Tritt es in Nicht-Uhr-Builds auf? Könnten Sie Ihre Rollup-Konfiguration und tsconfig.json posten?

Ich importiere sie wie folgt:

import template from '../Views/Shared/ads.hbs';

mit Erklärung an anderer Stelle:

declare module '*.hbs' {
  export default function (context: any): string;
}

Es passiert nicht in einem Nicht-Uhr-Build.

rollup.config.js:

import commonjs from 'rollup-plugin-commonjs';
import handlebars from 'rollup-plugin-handlebars-plus';
import json from 'rollup-plugin-json';
import resolve from 'rollup-plugin-node-resolve';
import rootImport from 'rollup-plugin-root-import';
import typescript from 'rollup-plugin-typescript2';
import uglify from 'rollup-plugin-uglify';

const partialRoot = `${__dirname}/src/Views/Shared`;

export default {
  output: {
    format: 'iife'
  },
  plugins: [
    typescript({ clean: true }),
    json(),
    resolve(),
    commonjs(),
    rootImport({ root: partialRoot }),
    handlebars({
      helpers: '../../ts/handlebars',
      partialRoot: partialRoot,
      isPartial: () => true
    }),
    uglify()
  ]
}

tsconfig.json

{
  "compilerOptions": {
    "downlevelIteration": true,
    "lib": [
      "dom",
      "dom.iterable",
      "es2017"
    ],
    "moduleResolution": "node",
    "noImplicitReturns": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "strict": true,
    "target": "es5"
  }
}

Ich bin versucht, das Lenker-Plugin dafür verantwortlich zu machen, aber wenn ich mir den Code ansehe, kann ich nicht sagen, warum es so fehlschlagen würde. Ist es möglich, das Problem auf ein kleines, in sich geschlossenes Repo zu reduzieren?

Aus dem Stack-Trace geht hervor, dass die TypeScript-Bibliothek sie nicht als gültige Quelldatei erkennt (was sie nicht ist). Vielleicht könnten Sie Nicht-TypeScript-Dateien überspringen, wenn Sie durch den Baum gehen? Ich werde versuchen, ein kleineres Beispiel zu finden.

Ja, ich überspringe standardmäßig bereits Nicht-Typoskript-Dateien, aber dies ist Typoskript, das versucht, Typoskript-Dateien zu analysieren und keinen der Importe zu finden. Bei jeder Beobachtungsrunde erfasst das Plugin Diagnosen für alle Typoskript-Dateien, nicht nur für die in dieser Runde geänderten. Das hat wahrscheinlich mit dem Fehler zu tun. Existiert normalerweise spaces.hbs in diesem Pfad oder ist das ein Build-Artefakt?

Das Hinzufügen einer .ts -Erweiterung behebt das Problem:

helpers: '../../ts/handlebars.ts',

Keine Ahnung, warum das nur im Uhrmodus passiert. Ich habe ein kleines Repo erstellt. Verwenden Sie npm run build oder npm run watch .

Kann auf Ihrem Repo nicht reproduziert werden. Hat npm install dann npm run watch (erfolgreicher Build) ausgeführt, main.ts modifiziert und watch einen weiteren erfolgreichen Build durchgeführt. Das Einfügen und Beheben eines Fehlers funktioniert ebenfalls wie erwartet. Running watch after build funktioniert auch.

package.json wurde unter Windows ausgeführt und hatte kein Typescript-Set, daher wurde Version 2.5.2 mit vscode installiert.

Muss ich etwas bestimmtes tun, um es auszulösen?

Das Handlebars-Plugin funktionierte standardmäßig nicht unter Windows, es scheint einen Fehler zu geben. Ich habe das Repo geändert, um das zu umgehen, und jetzt sollten Sie es reproduzieren können.

Heh, Sie haben Recht, es wurde versucht, die .hbs-Datei zu laden und zu analysieren.

Probieren Sie es jetzt mit dem Master-Branch aus

Hah, ja, es scheint jetzt gut zu sein :D

Nun, ich erlebe das Problem mit Vue-Komponenten. Hier ist der Stack-Trace.

[!] (rpt2 plugin) Error: Could not find file: '/my/path/src/components/Dashboard.vue?rollup-plugin-vue=script.ts'.
Error: Could not find file: '/my/path/src/components/Dashboard.vue?rollup-plugin-vue=script.ts'.

at getValidSourceFile (/my/path/node_modules/typescript/lib/typescript.js:114851:23)
at Object.getSyntacticDiagnostics (/my/path/node_modules/typescript/lib/typescript.js:115044:52)
at cache.walkTree (/my/path/node_modules/rollup-plugin-typescript2/src/index.ts:282:43)
at lodash_2 (/my/path/node_modules/rollup-plugin-typescript2/src/tscache.ts:174:61)

Knoten: v10.13.0
Typoskript: v3.1.6

Und ja, nur im Uhrenmodus.

@hiendv verwenden Sie die neuesten Versionen des vue-Plugins und dieses Plugins?

Ja, ich will.
Vielleicht ist es irrelevant, aber ich versuche es allowNonTsExtensions und es bleibt eine Weile ruhig :/ Funktioniert nach einer Weile nicht

@hiendv könntest du ein minimales Repo mit Reproduktion machen?

Ich bin dran, aber es ist irgendwie schwierig wegen des zufälligen Auftretens des Fehlers.

@ezolenko @ezolenko2 Könntest du dir das ansehen? Danke. https://github.com/hiendv/rpt2-vue-issue-32

Bearbeiten 1: Fügen Sie einen Screencast hinzu
peek

Ok, endlich dazu gekommen, @hiendv könntest du überprüfen, ob der Meister für dich funktioniert?

Ich habe den Master-Zweig eine Weile getestet. So weit, ist es gut. Ich denke, das ist es. Danke :D

Es ist zwei Tage her. Alles ist gut. Ich denke, Sie können den Patch jetzt veröffentlichen. Danke.

Jetzt in 0.18.1

Danke.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen