gpt4 book ai didi

reactjs - `ReferenceError: TextEncoder is not defined` 运行时 `react-scripts test --env=jsdom`

转载 作者:行者123 更新时间:2023-12-03 13:34:09 31 4
gpt4 key购买 nike

我在我的应用程序中使用 TensorFlow 编码器。当应用程序运行时,它在我的浏览器中工作正常,但在测试它构建时遇到问题:

$ npx react-scripts test --env=jsdom
FAIL src/App.test.js
● Test suite failed to run

ReferenceError: TextEncoder is not defined

16 | import TextField from '@material-ui/core/TextField';
17 | import Typography from '@material-ui/core/Typography';
> 18 | import * as mobilenet from '@tensorflow-models/mobilenet';
| ^
19 | import * as UniversalSentenceEncoder from '@tensorflow-models/universal-sentence-encoder';
20 | import * as tf from '@tensorflow/tfjs';
21 | import axios from 'axios';

at new PlatformBrowser (node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts:26:28)
at Object.<anonymous> (node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts:50:30)
at Object.<anonymous> (node_modules/@tensorflow/tfjs-core/src/index.ts:29:1)
at Object.<anonymous> (node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts:18:1)
at Object.<anonymous> (node_modules/@tensorflow/tfjs-converter/src/index.ts:17:1)
at Object.<anonymous> (node_modules/@tensorflow-models/mobilenet/dist/index.js:38:14)
at Object.<anonymous> (src/components/model.js:18:1)
at Object.<anonymous> (src/App.js:8:1)
at Object.<anonymous> (src/App.test.js:3:1)

我想消除这个错误。我尝试过使用“文本编码”包,但我不确定如何在导入之前正确定义 TextEncoder。

也许我可以为 --env 设置不同的选项?

如果没有 --env=jsdom,我也会遇到同样的错误。我相信我在收到类似类型的未定义错误后添加了它,并且它纠正了问题。

这是我的测试:

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

it('renders without crashing', () => {
const div = document.createElement('div');
ReactDOM.render(<App />, div);
ReactDOM.unmountComponentAtNode(div);
});

因此设置 --env=node 也不起作用,因为:ReferenceError:文档未定义

最佳答案

jsdom 似乎没有在 DOM 全局中定义 TextEncoder 。所以你可以用node.js来填写它。

测试/自定义测试-env.js:

const Environment = require('jest-environment-jsdom');

/**
* A custom environment to set the TextEncoder that is required by TensorFlow.js.
*/
module.exports = class CustomTestEnvironment extends Environment {
async setup() {
await super.setup();
if (typeof this.global.TextEncoder === 'undefined') {
const { TextEncoder } = require('util');
this.global.TextEncoder = TextEncoder;
}
}
}

npx react-scripts test --env=./test/custom-test-env.js

关于reactjs - `ReferenceError: TextEncoder is not defined` 运行时 `react-scripts test --env=jsdom`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57712235/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com