#javascript #typescript #export #dynamics-365
Вопрос:
Я сталкиваюсь с проблемой при попытке ссылаться на функции javascript из форм Dynamics 365, когда файлы javascript были скомпилированы из typescript, экспортирующего класс, в котором находится функция (что я делаю для запуска модульных тестов против них). Та же проблема не возникает, если вместо этого я помещаю функцию в пространство имен, но возникает, если я затем попытаюсь экспортировать пространство имен вместо/также как функцию (опять же, чтобы иметь возможность ссылаться в модульных тестах.
В каждом из приведенных ниже случаев внутри динамики в событии onchange я ссылаюсь на функцию, вызываемую по ссылке.ОпенДиалогОнХолд.
Поэтому при использовании:
export class Referral {
static OpenDialogOnHold(context: Xrm.Events.EventContext) {
try {
Xrm.Navigation.navigateTo(
...
);
} catch (exception) {
console.error(exception);
}
}
}
или
export namespace Referral {
export function OpenDialogOnHold(context: Xrm.Events.EventContext) {
try {
Xrm.Navigation.navigateTo(
...
);
} catch (exception) {
console.error(exception);
}
}
}
затем он выходит из строя внутри Dynamics, говоря, что не может найти ссылку на имена функций.Открытый плацдарм
но если я использую:
namespace Referral {
export function OpenDialogOnHold(context: Xrm.Events.EventContext) {
try {
Xrm.Navigation.navigateTo(
...
);
} catch (exception) {
console.error(exception);
}
}
}
тогда это работает нормально, однако затем я пытаюсь ссылаться на функцию в модульных тестах, поскольку она жалуется, что файл не является модулем.
Any assistance gratefully appreciated!
ts.config settings are:
{
"compileOnSave": true,
"compilerOptions": {
"target": "ES5",
"module": "ES2015",
"rootDir": "ts",
"moduleResolution": "node",
"sourceMap": true,
"outDir": "Webresources/ih_/js",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true
},
"exclude": ["tests/**/*"]
}