首页 > 解决方案 > Javascript 文件加载其他 Javascript 文件没有窗口/文档

问题描述

我正在使用没有窗口或文档的 javascript 文件。我有调用另一个 Javascript 文件 task.js package.json 的 package.json 文件:

   {
  "name": "mytask",
  "version": "1.0.0",
  "description": "mytask TFS Build",
  "main": "scripts/mytask.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "install": "npm install"
  },
  "repository": {},
  "author": "OST",
  "license": "ISC",
  "dependencies": {
    "https-proxy-agent": "1.0.0",
    "jquery": "3.3.1",
    "jsdom": "13.0.0",
    "load-json-file": "^2.0.0",
    "moment": "^2.22.2",
    "object.values": "^1.0.4",
    "request": "2.81.0",
    "vso-node-api": "^5.1.2",
    "vss-web-extension-sdk": "5.141.0",
    "vsts-task-lib": "1.1.0"
  }

}

TFS 调用 javascript 文件存在于 package.json “main” 选项中。package.json 通过“main”选项调用 mytask.js,这个 javascript 文件将作为 TFS 中的任务运行并将内容打印到控制台。

基本上我的问题是没有 HTML 页面或文档,所以我无法通过或 document.addElement 加载 javascript 文件...

我需要将 javascript 文件(来自 vss-web-extension-sdk 的 VSS.SDK.js)加载到 mytask.js。我是 javascript 新手,所以我真的不知道我做错了什么。经过长时间的搜索,我找到了创建全局文档的“jsdom”。但仍然不知道如何加载 VSS.SDK.js 脚本。

我的任务.js:

const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const { window } = new JSDOM(`<!DOCTYPE html>`);

var jQuery = require("jquery")(window);

 // Option 1
    jQuery.loadScript = function (url, callback) {
        jQuery.ajax({
            url: url,
            dataType: 'script',
            success: callback,
            fail: callback,
            async: false
        });
    }

    jQuery.loadScript('vss-web-extension-sdk/lib/VSS.SDK.js', function(){console.log("loaded!!!!!!!!!!!!!!!!!!!!")});


    // Option 2
    jQuery.getScript('vss-web-extension-sdk/lib/VSS.SDK.js').done(function(){console.log("loaded!!!!!!!!!!!!!")}).fail(function(){console.log("failed!!!!!!!!!!!!!!")});


    // Option 3
    jQuery.getScript('vss-web-extension-sdk/lib/VSS.SDK.js', function() {
        VSS.init({explicitNotifyLoaded: true, usePlatformScripts: true, usePlatformStyles: false});

        var serverContext = VSS.getWebContext();
    });

我尝试了这三个选项,但没有奏效!什么都没有打印。

我使用 VSS.SDK 加载 webContext。有任何想法吗?

标签: javascriptjquerytfsjsdom

解决方案


推荐阅读