目前情况是,写了一个 vite 文件替换插件,可以将 home.tsx 替换成 home.params.tsx 的内容
但是现在出现一个问题,home.params.tsx 需要引入 home.tsx 的内容,但是 home.tsx 的内容已经被替换了,造成了循环引用
这个计算机入门题我当然会,将 home.tsx 文件找个地方存起来就好了。
但是问题出现了:
?no-rewrite
标识,完成了所有的功能,但是 ts-check 不认,单行频闭报错下面的引入也会报错,不行就只能关掉整个 ts 检查纠结了几天了,站内有没有了解这块的大神,有偿请大家帮忙一下
base: bW9rZXZpcDg=
1
muunala10221 2023-05-11 16:45:50 +08:00
这确实是一个有趣的问题。解决此类问题的关键是确保在需要的时候能正确地访问到源文件,同时防止循环引用。这里提供一种可能的解决方案:
源文件和替换文件的分离:你可以创建一个新的文件(例如,home.original.tsx ),在替换 home.tsx 前,先将原始的 home.tsx 内容拷贝到 home.original.tsx 中。然后,home.params.tsx 可以安全地引用 home.original.tsx ,而不会引发循环引用。 使用特定的标记:在需要引用原始文件的地方,你可以使用一种特殊的注释或标记。例如,你可以在 home.params.tsx 中使用如下的引用: tsx Copy code // @original import Home from './home.tsx'; 然后,你的插件可以搜索这些标记,并在发现它们时替换为指向原始文件的引用: tsx Copy code import Home from './home.original.tsx'; 处理 TypeScript 错误:关于 TypeScript 的问题,你可以尝试在项目的 tsconfig.json 文件中使用 "paths" 选项来映射你的特殊标记到正确的文件。例如: json Copy code { "compilerOptions": { "paths": { "*?no-rewrite": ["*"] } } } 这是一个复杂的问题,可能没有通用的解决方案。你可能需要根据项目的具体需求和限制来调整这个解决方案。希望这个建议能够对你有所帮助! 帮你问了 gpt4 |
2
mokevip OP @muunala10221 "paths": {
"*?no-rewrite": ["*"] } 我试过,不知道是因为什么,解析不到对应的文件,报错找不到该文件 源文件和替换文件的分离:你可以创建一个新的文件(例如,home.original.tsx ) 想过这个方案,刚刚又试了一下 报错 Sourcemap for "..." points to missing source files 因为是新建的文件,sourcemap 中没有对应文件,无法加载。正在寻找解决方法 |
3
mokevip OP @muunala10221 解决了,结合了两种想法,通过修改 @no-rewrite/index.tsx 变为 @/index.tsx?no-rewrite , 来避免引入报错问题,并标识需要源文件。 然后通过暂存,来存储源文件,在处理的地方 识别 ?no-rewrite 返回源文件
思路一一直很清晰,就是受限于各种写法限制,vite 传入的参数,ts 对引用路径的处理 等等 总结 chatgpt 还是有用的,虽然解决不了问题,但是能够提供思路 |
4
muunala10221 2023-05-12 08:39:10 +08:00
@mokevip 👍 比较主观的问题要一步步对话引导他
|