导入模块到测试文件
import module to testing file
我的应用程序运行良好,但我无法将 utils.ts 文件中的独立函数导入测试文件。
错误信息:SyntaxError: Cannot use import statement outside a module
(屏幕下方)
绞尽脑汁,看了很多教程和文档,还是没有找到解决办法。
我想解决它,这样我就不必在编程时打开 运行 控制台。这只是香草 JS + HTML + CSS,我不喜欢使用像 npm init
.
这样的命令
我也遇到过很多这样的 Whosebug 问题,但对我没有任何帮助,例如我不能将 type: module
添加到 package.json,因为它会导致我的应用程序出现另一个错误。
拜托,有人能帮我看看哪里有错吗?
index.html:
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<button id="startAppBtn">start</button>
<div id="container" class="container">
<div id="pointsBox" class="pointsBox"></div>
</div>
<script type="module" src="index.js" defer></script>
</body>
</html>
index.js
import { InsertionSort } from "./insertionSort.js";
const algo = new InsertionSort();
const startAppBtn = document.getElementById("startAppBtn");
startAppBtn.addEventListener('click', () => {
console.log('start app');
algo.mainApp(); /* all app is executed here inside this method, it contains
around 300 lines, so i didn't attache all the code inside, i don't
think it is important. */
});
utils.js
import Point from './point.js'; // => here it fails, this import evaluates testing file as error
export function xxx() {
new Point(i, value[0] + 1);
return 'xxx';
}
util.test.js
var assert = require('assert');
var { xxx } = require('./utils'); // here I import method from utils
describe('Array', function () {
describe('#xxx', function () {
it('import test', function () {
const res = xxx(); // here it is used
assert.equal('xxx', res);
});
});
});
package.json
{
"devDependencies": {
"jest": "^28.0.3"
}
}
画面:
尽管在您的示例中有很多地方可能出错(因为有很多地方有很多失败点),我会猜测 - 因为它很有趣。
我看到你的测试文件使用 require()
所以这些是 CommonJS 模块。您的实际代码使用 import/export,因此这些是 ES Moules。你不能只是混合它们。除非你将 jest 配置为使用 babel 将你的源代码转换为 CommonJS 模块,否则这是行不通的。
jest documentation has all the commands。配置 babel 为当前节点版本进行转译应该就足够了。
如果您只在您的代码库中使用 ES 模块,您可以更改您的测试代码以也使用 ES 模块。检查你的 jest 配置,因为你可能需要告诉 jest 使用 ES 模块而不是 CommonJS。
Support is still experimental but you might give it a shot.
我的应用程序运行良好,但我无法将 utils.ts 文件中的独立函数导入测试文件。
错误信息:SyntaxError: Cannot use import statement outside a module
(屏幕下方)
绞尽脑汁,看了很多教程和文档,还是没有找到解决办法。
我想解决它,这样我就不必在编程时打开 运行 控制台。这只是香草 JS + HTML + CSS,我不喜欢使用像 npm init
.
我也遇到过很多这样的 Whosebug 问题,但对我没有任何帮助,例如我不能将 type: module
添加到 package.json,因为它会导致我的应用程序出现另一个错误。
拜托,有人能帮我看看哪里有错吗?
index.html:
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<button id="startAppBtn">start</button>
<div id="container" class="container">
<div id="pointsBox" class="pointsBox"></div>
</div>
<script type="module" src="index.js" defer></script>
</body>
</html>
index.js
import { InsertionSort } from "./insertionSort.js";
const algo = new InsertionSort();
const startAppBtn = document.getElementById("startAppBtn");
startAppBtn.addEventListener('click', () => {
console.log('start app');
algo.mainApp(); /* all app is executed here inside this method, it contains
around 300 lines, so i didn't attache all the code inside, i don't
think it is important. */
});
utils.js
import Point from './point.js'; // => here it fails, this import evaluates testing file as error
export function xxx() {
new Point(i, value[0] + 1);
return 'xxx';
}
util.test.js
var assert = require('assert');
var { xxx } = require('./utils'); // here I import method from utils
describe('Array', function () {
describe('#xxx', function () {
it('import test', function () {
const res = xxx(); // here it is used
assert.equal('xxx', res);
});
});
});
package.json
{
"devDependencies": {
"jest": "^28.0.3"
}
}
画面:
尽管在您的示例中有很多地方可能出错(因为有很多地方有很多失败点),我会猜测 - 因为它很有趣。
我看到你的测试文件使用 require()
所以这些是 CommonJS 模块。您的实际代码使用 import/export,因此这些是 ES Moules。你不能只是混合它们。除非你将 jest 配置为使用 babel 将你的源代码转换为 CommonJS 模块,否则这是行不通的。
jest documentation has all the commands。配置 babel 为当前节点版本进行转译应该就足够了。
如果您只在您的代码库中使用 ES 模块,您可以更改您的测试代码以也使用 ES 模块。检查你的 jest 配置,因为你可能需要告诉 jest 使用 ES 模块而不是 CommonJS。 Support is still experimental but you might give it a shot.