【发布时间】:2019-08-29 14:20:48
【问题描述】:
我在我的应用程序中使用了 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: document is not defined。
【问题讨论】:
-
解决方案,全球 polyfill 编码器,在类似问题中提供,为我解决了???? stackoverflow.com/a/68468204/5404186
标签: reactjs tensorflow.js