Ошибка типа: e не является функцией в Object. <anonymous>in BotFramework-webchat@4.8.0 - PullRequest
2 голосов
/ 13 апреля 2020

Я пытаюсь настроить веб-чат BotFramework, используя узел.

Я получаю TypeError: e не функция в Object. (custom-webchat-4.8.0. js: 32) только в версии 4.8.0 и тот же код работает с версией 4.6.0.

Кто-нибудь знает, как решить эту проблему?

Здесь я прилагаю HTML файл, пакет. json и ts файлы для справки

пакет. json:

{
    "name": "custom-webchat",
    "version": "4.8.0",
    "scripts": {
      "build": "rimraf dist && webpack",
      "lint": "tslint -c tslint.json --project . --test src/**/*.ts",
      "deploy": "aws s3 sync dist s3://www.acai-hub.com/js --acl public-read"
    },
    "repository": {
      "type": "git",
      "url": "https://bitbucket.iaas-at-mit.de/scm/bot/bebop-webchat.git"
    },
    "dependencies": {
        "@babel/runtime": "^7.8.4",
        "adaptivecards": "1.2.5",
        "botframework-directlinejs": "^0.11.6",
        "botframework-directlinespeech-sdk": "4.8.0",
        "botframework-webchat-component": "4.8.0",
        "botframework-webchat-core": "4.8.0",
        "core-js": "^3.5.0",
        "markdown-it": "^10.0.0",
        "markdown-it-for-inline": "^0.1.1",
        "memoize-one": "^5.1.1",
        "microsoft-cognitiveservices-speech-sdk": "1.6.0",
        "microsoft-speech-browser-sdk": "^0.0.12",
        "prop-types": "^15.7.2",
        "sanitize-html": "^1.20.0",
        "url-search-params-polyfill": "^7.0.0",
        "web-speech-cognitive-services": "^6.0.0",
        "whatwg-fetch": "^3.0.0",
        "botframework-webchat": "^4.8.0"
      },
      "devDependencies": {
        "@babel/cli": "^7.8.4",
        "@babel/core": "^7.8.4",
        "@babel/plugin-proposal-class-properties": "^7.8.3",
        "@babel/plugin-proposal-object-rest-spread": "^7.8.3",
        "@babel/plugin-transform-runtime": "^7.8.3",
        "@babel/preset-env": "^7.8.4",
        "@babel/preset-react": "^7.8.3",
        "@babel/preset-typescript": "^7.8.3",
        "@types/node": "^12.12.18",
        "@types/react": "16.8.25",
        "@typescript-eslint/eslint-plugin": "^2.12.0",
        "@typescript-eslint/parser": "^2.12.0",
        "babel-plugin-istanbul": "^5.2.0",
        "babel-plugin-transform-inline-environment-variables": "^0.4.3",
        "concurrently": "^5.0.2",
        "eslint": "^6.7.2",
        "eslint-plugin-prettier": "^3.1.1",
        "eslint-plugin-react": "^7.17.0",
        "eslint-plugin-react-hooks": "^2.3.0",
        "isomorphic-react": "4.8.0",
        "isomorphic-react-dom": "4.8.0",
        "prettier": "^1.19.1",
        "source-map-loader": "^0.2.4",
        "terser-webpack-plugin": "^2.3.0",
        "typescript": "^3.7.3",
        "webpack": "^4.41.3",
        "webpack-cli": "^3.3.10",
        "webpack-stats-plugin": "^0.3.0",
        "rimraf": "^2.6.3",
        "ts-loader": "^6.0.4",
        "tslint": "^5.18.0"
      },
      "peerDependencies": {
        "react": "^16.8.6",
        "react-dom": "^16.8.6"
      }
  }

index.ts:

import { WebChat, WebChatOptions } from "./custom-webchat";

let webChat: WebChat;

export function renderWebChat(options: WebChatOptions, element: HTMLElement) {
  webChat = new WebChat(options);
  webChat.renderWebChat(element);
}

window["WebChat"] = {
  ...window["WebChat"],
  renderWebChat
};

custom-webchat.ts:

import * as BotframeworkWebChat from "botframework-webchat";

export interface WebChatOptions {
  token: string;
}

export class WebChat {
  private directline: any;
  constructor({ token}: WebChatOptions) {
    this.directline = BotframeworkWebChat.createDirectLine({ token });
  }

  renderWebChat(element: HTMLElement) {    
    BotframeworkWebChat.renderWebChat(
      {
        directLine: this.directline,        
        botAvatarInitials: 'WC',
        userAvatarInitials: 'WW'
      },
      element
    );
  }
}

HTML:

<html xmlns:th="http://www.thymeleaf.org" lang="ar">
<head th:inline="text">
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, maximum-scale=1">
    <title>Demo</title>
</head>
<body th:inline="text">
    <div class="chatBot" id="bot" role="main"></div>    
    <script src="file:///D:/bebop-webchat/dist/custom-webchat-4.8.0.js"></script>
    <script>
        WebChat.renderWebChat(
            {
               token: 'R-yE15Nt-hI.18_ofkIDC1mBY7GbDABIpFC8K4wjF3989JQLAEUJ2nU'
            },
            document.getElementById("bot")
        );      
    </script>
</body>
</html>

После открытия файла HTML в виджете браузера выполняется рендеринг, как показано ниже: enter image description here

После ввода привет в чате появляется сообщение об ошибке, как показано ниже в консоли: enter image description here enter image description here

Я перешел по этой ссылке https://github.com/microsoft/BotFramework-WebChat/blob/master/CHANGELOG.md для зависимостей.

Пожалуйста, дайте мне знать, если отсутствует какая-либо зависимость.

Примечание: Я сталкиваюсь с этой проблемой только с botframework-webchat@4.8.0

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

существует проблема в botframework-webchat 4.8.0 версии, поэтому вы можете исправить установку botframework-webchat@4.7.1 и убедиться, что файл package.lock должен иметь ту же версию 4.7.1.

0 голосов
/ 14 апреля 2020

После выполнения обходного решения, упомянутого в https://github.com/microsoft/BotFramework-WebChat/issues/3046, моя проблема решена.

Спасибо за поддержку.

...