Я пытаюсь загрузить остальных клиентов для использования в настраиваемом виджете Dashboard Devops Dashboard. В документации Microsoft показан пример машинописи
import RestClient = require("TFS/WorkItemTracking/RestClient");
// Get an instance of the client
var client = RestClient.getClient();
// Call a method on the client
// e.g. client.getResource(...).then(...);
чтобы загрузить клиент для отдыха. Я попытался последовать этому примеру и поместил ниже пример того, что я считаю рабочим кодом.
Однако, когда страница загружается, я получаю следующие ошибки,
require.js:1961 GET https://localhost:5500/scripts/node_modules/vss-web-extension-sdk/typings/tfs.d.ts/Dashboards/WidgetHelpers.js net::ERR_ABORTED 404 (Not Found)
require.js:1961 GET https://localhost:5500/scripts/node_modules/vss-web-extension-sdk/typings/tfs.d.ts/WorkItemTracking/RestClient.js net::ERR_ABORTED 404 (Not Found)
require.js:1961 GET https://localhost:5500/scripts/node_modules/vss-web-extension-sdk/typings/tfs.d.ts/WorkItemTracking/Contracts.js net::ERR_ABORTED 404 (Not Found)
По какой-то причине RequireJS пытается загрузить файлы javascript для типов, определенных в файле tfs.d.ts
.
Мне известно, что можно использовать VSS.require()
, но я бы хотел использовать формат, указанный в документации.
Кто-нибудь знает, что мне не хватает или как я могу изменить это, чтобы исправить эту проблему с загрузкой модулей с RequireJS?
Редактировать
Я забыл упомянуть, библиотека, которую я использую, называется VSS Web Extension SDK . Я установил его с помощью команды npm, npm install vss-web-extension-sdk
. Причина, по которой я пытаюсь использовать RequireJS с этой библиотекой, заключается в том, что в разделе TypeScript README он указывает на использование модуля AMD.
Требуемый код и файлы конфигурации
test.html
<!DOCTYPE html>
<html>
<head>
<script src="node_modules/requirejs/require.js" data-main="scripts/config.js"></script>
</head>
<body>
<div class="widget">
<h2 class="title"></h2>
</div>
</body>
</html>
config.js
requirejs.config({
paths: {
"VSS": "node_modules/vss-web-extension-sdk/lib/VSS.SDK.min.js",
"TFS": "node_modules/vss-web-extension-sdk/typings/tfs.d.ts"
}
});
require(["HelloWorld"]);
Примечание. Если строка "TFS": "node_modules/vss-web-extension-sdk/typings/tfs.d.ts"
отсутствует, отображаются следующие ошибки.
require.js:1961 GET https://localhost:5500/scripts/TFS/Dashboards/WidgetHelpers.js net::ERR_ABORTED 404 (Not Found)
require.js:1961 GET https://localhost:5500/scripts/TFS/WorkItemTracking/RestClient.js net::ERR_ABORTED 404 (Not Found)
require.js:1961 GET https://localhost:5500/scripts/TFS/WorkItemTracking/Contracts.js net::ERR_ABORTED 404 (Not Found)
HelloWorld.ts
VSS.init({
explicitNotifyLoaded: true,
usePlatformStyles: true
});
import WidgetHelpers = require("TFS/Dashboards/WidgetHelpers");
import RestClient = require("TFS/WorkItemTracking/RestClient");
import { QueryExpand } from "TFS/WorkItemTracking/Contracts";
// Get an instance of the client
var client = RestClient.getClient();
WidgetHelpers.IncludeWidgetStyles();
VSS.register("HelloWorldWidget", function () {
return {
load: function (widgetSettings) {
var $title = $('h2.title');
$title.text('Hello World');
console.log(client.getQueries("Projects", QueryExpand.All));
return WidgetHelpers.WidgetStatusHelper.Success();
}
};
});
VSS.notifyLoadSucceeded();
Скомпилировано HelloWorld.js
define(["require", "exports", "TFS/Dashboards/WidgetHelpers", "TFS/WorkItemTracking/RestClient", "TFS/WorkItemTracking/Contracts"], function (require, exports, WidgetHelpers, RestClient, Contracts_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
VSS.init({
explicitNotifyLoaded: true,
usePlatformStyles: true
});
// Get an instance of the client
var client = RestClient.getClient();
WidgetHelpers.IncludeWidgetStyles();
VSS.register("HelloWorldWidget", function () {
return {
load: function (widgetSettings) {
var $title = $('h2.title');
$title.text('Hello World');
console.log(client.getQueries("Projects", Contracts_1.QueryExpand.All));
return WidgetHelpers.WidgetStatusHelper.Success();
}
};
});
VSS.notifyLoadSucceeded();
});
tsconfig.json
{
"compilerOptions": {
"target": "es6",
"outDir": "scripts",
"module": "amd",
"moduleResolution": "node",
"types": [
"vss-web-extension-sdk"
]
}
}