在一个create-react-app打字稿项目中,我尝试编写此代码只是为了快速测试一些内容:
// experiment.test.ts
it('experiment', () => {
console.log('test');
});
Run Code Online (Sandbox Code Playgroud)
但这给了我以下错误,下面是一个红色的波浪形it:
提供“ --isolatedModules”标志时,所有文件都必须是模块。
但是,如果我将文件更改为以下文件,那么一切似乎都很好(当然,除了未使用的导入外):
// experiment.test.ts
import { Component} from 'react'; // literally anything, don't even have to use it
it('test', () => {
console.log('test');
});
Run Code Online (Sandbox Code Playgroud)
为什么?这是怎么回事 --isolatedModules实际上是什么意思?
Tit*_*mir 45
Typescript将没有导入/导出的文件视为旧脚本文件。由于此类文件不是模块,因此它们的任何定义都已合并到全局名称空间中。isolatedModules禁止此类文件。
将任何导入或导出添加到文件都会使其成为一个模块,并且错误会消失。
这export {}也是将文件制作为模块而无需导入任何内容的便捷方法。
Woj*_*ski 40
正确的方法是告诉 TypeScript 你想要什么。如果您不想在目录中isolatedModules创建并添加:tsconfig.jsontest
{
"extends": "../tsconfig.json",
"compilerOptions": {
"isolatedModules": false
},
}
Run Code Online (Sandbox Code Playgroud)
添加"isolatedModules": true到配置中,然后通过向export {}我添加空的味道不好的代码来欺骗 TypeScript 检查器。
Y M*_*Y M 10
如果您不想添加不必要的内容
export {}
Run Code Online (Sandbox Code Playgroud)
无处不在,并且不想破坏其他文件的编译器选项。
如果您有单独的tests/目录,则可以扩展根目录tsconfig文件并在该tests/目录中创建一个新文件。
然后将其添加到其中:
{
"extends": "../tsconfig.json",
"compilerOptions": {
"isolatedModules": false
},
}
Run Code Online (Sandbox Code Playgroud)
这仅关闭isolatedModules测试文件的标志。重新启动代码编辑器以同步更改。
尽管您从“错误文件”中导出了内容,但仍然有错误?
Check if you don't export same name that you already export in another file (冲突)After your fix try to stop and start your npm/yarn runner (我经历过它即使在页面重新加载后也无法自行恢复,尤其是当您在其他地方遇到另一个错误时)| 归档时间: |
|
| 查看次数: |
9244 次 |
| 最近记录: |