我正在使用import. meta阅读一个文件来解析目录,当试图在函数中模拟它时失败了。下面是我想模拟的代码部分
// readFileUtil
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
export async function readFile(fileName: string){
try {
const data = await fs.promises.readFile(fileName, 'utf8')
return data
} catch (err) {
console.log(err);
}
}
然后我使用上面的代码来读取这样的文件:
import readFileUtils from '../file-utils'
import dataProcessor from '../data/processor
function processData(fileName:string){
const data = await fs.promises.readFile(fileName, 'utf8')
//rest of code uses data
}
然后,我编写了一个Jest测试,它测试processData函数,如下所示
import readFileUtils from '../file-utils'
import dataProcessor from '../data/processor
jest.mock('../file-utils)'
describe('Data Processing suite' () => {
const fileName = 'resources/data.xml
processData(fileName)
}
我得到以下错误
只有当'--module'选项为'es 2020','es 2022'... etc时,才允许使用'import. meta'元属性
我不知道如何解决这个问题。我做了很多网上搜索,但我尝试的一切都不起作用。我做了以下操作:
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
...
我还安装了'npm install ts-jest-mock-import- meta',但这些解决方案都不起作用
请帮帮忙
1条答案
按热度按时间9vw9lbht1#
我可以解决import. meta错误问题。通过做以下事情。
首先,我安装了以下
接下来,我创建了一个文件,babel.config.js,并添加了以下代码;
我仍然无法让文件阅读函数的模拟工作。