在尝试设置测试环境时,我遇到了以下问题。当我运行测试(使用mocha ./src/test/.setup.js ./src/test/**.test.js)时,出现Element is not defined错误:
app\node_modules\onsenui\js\onsenui.js:603
var originalCreateShadowRoot = Element.prototype.createShadowRoot;
^
ReferenceError: Element is not defined
at app\node_modules\onsenui\js\onsenui.js:603:34
at app\node_modules\onsenui\js\onsenui.js:359:7
at Array.forEach (native)
at initializeModules (app\node_modules\onsenui\js\onsenui.js:358:13)
at app\node_modules\onsenui\js\onsenui.js:908:5
(...)
Run Code Online (Sandbox Code Playgroud)
这怎么可能,Element不是一个基本的DOM元素吗?
使用以下版本:
使用以下 .setup.js 文件:
require('babel-register')({
presets: ["react","airbnb","es2015"]
});
var jsdom = require('jsdom').jsdom;
var exposedProperties = ['window', 'navigator', 'document'];
global.document = jsdom('');
global.window = document.defaultView;
Object.keys(document.defaultView).forEach((property) => {
if (typeof global[property] === 'undefined') {
exposedProperties.push(property);
global[property] = document.defaultView[property];
}
});
global.navigator …Run Code Online (Sandbox Code Playgroud) Onsen UI 在动态渲染温泉的 js 和 css 时抛出错误。但是当我在静态 html 中使用它时它正在工作。错误:未捕获的引用错误:未定义 setImmediate
internal.js:52 Uncaught ReferenceError: setImmediate is not defined
at Object.internal$1.waitDOMContentLoaded (internal.js:52)
at internal.js:103
at onsElements (onsenui.js:6)
at onsenui.js:7
Run Code Online (Sandbox Code Playgroud)
我的代码。,
jsResource = ['https://cdnjs.cloudflare.com/ajax/libs/onsen/2.10.4/js/onsenui.js'];
async.mapSeries(jsResource, function (file, callback3) {
// console.log('Enter FILE =>',file)
if (file) {
var jsFile = iframedocument.createElement('script');
jsFile.setAttribute('type', 'text/javascript');
jsFile.setAttribute('src', file);
head.appendChild(jsFile);
if (jsFile.readyState) { //IE
jsFile.onreadystatechange = function () {
if (s.readyState == "loaded" ||
s.readyState == "complete") {
s.onreadystatechange = null;
callback3(null, null);
} else {
callback3(null, null); …Run Code Online (Sandbox Code Playgroud)