gpt4 book ai didi

javascript - JSDom 不加载相关脚本

转载 作者:行者123 更新时间:2023-11-30 12:25:41 27 4
gpt4 key购买 nike

所以我尝试用 jsdom 设置 mocha 测试,经过多次调试尝试,我将问题缩小到 jsdom 执行绝对 URL 脚本(例如 http://code.jquery.com/jquery- 2.1.3.min.js) 但不是相对 URL 脚本(例如 js/script.js)。

我的 test.js 如下:

var assert = require("assert");
var fs = require('fs');
var jsdom = require("jsdom");

describe('Foo Test', function(){
it('Foo Check', function(done){
this.timeout(5000);

jsdom.env({
html: fs.readFileSync('index.htm')
,features: {
FetchExternalResources: ["script"]
,ProcessExternalResources: ["script"]
}
,done: function(errors, window){
if(errors != null) console.log('Errors', errors);
var $ = window.$; // $ is defined
var foo = window.foo; //foo is undefined
assert(foo);
done();
}
});
});
});

错误:未捕获的断言错误:undefined == true

htm:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Foo</title>
<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
<script src="js/script.js"></script>
</head>

<body>
</body>
</html>

脚本.js:

var foo = true;

最佳答案

在调用 jsdom.env 时,删除 html 并使用 file。我已经使用 jsdom 3.1.2 测试了您对代码的这种修改,并且它有效:

    jsdom.env({
file: path.join(__dirname, "index.htm")
,features: {
[... etc ...]

(您还需要在其他 require 调用中添加 var path = require("path")。)

使用 html 的问题是 jsdom 不知道 HTML 的基本 URL 是什么。如果您使用 file,它将从您提供的路径加载代码并将该路径用作基本 URL。

关于javascript - JSDom 不加载相关脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29481333/

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