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>)
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 Não funciona depois de um tempoallowNonTsExtensions
e fica bastante por 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
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.