Rollup-plugin-typescript2: Erros no modo de observação para arquivos não TypeScript

Criado em 23 set. 2017  ·  22Comentários  ·  Fonte: ezolenko/rollup-plugin-typescript2

Eu importo arquivos de template do Handlebars que devem ser ignorados pelo diagnóstico.

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>)

Todos 22 comentários

Você os importa? Isso acontece na compilação sem relógio? Você poderia postar sua configuração de rollup e tsconfig.json?

Eu importo eles assim:

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

com declaração em outro lugar:

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

Isso não acontece em uma compilação que não seja de relógio.

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"
  }
}

Estou tentado a culpar isso no plugin do guidão, mas apenas olhando para o código, não posso dizer por que ele estaria falhando dessa maneira. É possível reduzir o problema a um pequeno repositório autônomo?

A partir do rastreamento de pilha, parece que a biblioteca TypeScript não o está reconhecendo como um arquivo de origem válido (o que não é). Talvez você possa pular arquivos não TypeScript ao percorrer a árvore? Vou tentar criar um exemplo menor.

Sim, eu já pulo arquivos não-typescript por padrão, mas este é typescript tentando analisar o arquivo typescript e não encontrando uma das importações. A cada rodada, o plug-in obtém diagnósticos para todos os arquivos datilografados, não apenas os modificados nessa rodada. Isso provavelmente tem algo a ver com o erro. O spaces.hbs existe nesse caminho normalmente ou é um artefato de compilação?

Adicionar uma extensão .ts corrige isso:

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

Não tenho certeza porque isso só acontece no modo de relógio. Eu criei um pequeno repositório . Use npm run build ou npm run watch .

Não é possível reproduzir em seu repositório. Fiz npm install então npm run watch (compilação bem-sucedida), modifiquei main.ts e observei outra compilação bem-sucedida. Introduzir e corrigir um erro também funciona conforme o esperado. Executando watch após build também funciona.

Executando no Windows, package.json não tinha o typescript definido, então ele pegou a versão 2.5.2 instalada com o vscode.

Existe algo específico que eu preciso fazer para acioná-lo?

O plugin do guidão não estava funcionando no Windows por padrão, parece que há um bug nele. Modifiquei o repositório para contornar isso e agora você deve poder reproduzi-lo.

Heh, você está certo, ele estava tentando carregar e analisar o arquivo .hbs.

Tente agora com o branch master

Hah, sim, parece bem agora :D

Bem, estou enfrentando o problema com componentes Vue. Aqui está o rastreamento de pilha.

[!] (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)

nó: v10.13.0
texto datilografado: v3.1.6

E sim, apenas no modo de relógio.

@hiendv você usa as versões mais recentes do plugin vue e este plugin?

Sim eu quero.
Talvez seja irrelevante, mas eu tento allowNonTsExtensions e fica bastante por um tempo :/ Não funciona depois de um tempo

@hiendv você poderia fazer um repositório mínimo com reprodução?

Estou nisso, mas é meio difícil por causa da aparência aleatória do erro.

@ezolenko @ezolenko2 Você poderia dar uma olhada nisso? Obrigado. https://github.com/hiendv/rpt2-vue-issue-32

Editar 1: adicionar um elenco de tela
peek

Ok, finalmente consegui, @hiendv você poderia verificar se o master funciona para você?

Eu tenho testado o branch master por um tempo. Até agora tudo bem. Eu acho que é isso. Obrigado :D

Faz dois dias. Tudo está bem. Eu acho que você pode liberar o patch agora. Obrigada.

Em 0.18.1 agora

Obrigada.

Esta página foi útil?
0 / 5 - 0 avaliações