0

我想在不使用 index.html 的情况下将 jspdf 导入我的业务应用程序工作室项目,因为我读到从 fiori 启动板打开应用程序时不会调用 index.html。

我可以让 jspdf 部分正常工作,但是一旦我调用 autotable 方法,它就会引发错误:“Uncaught TypeError: doc.autoTable is not a function”

在此处输入图像描述

带有 jspdf 库的路径:

在此处输入图像描述

清单.json:

"resources": {
  "css": [
    {
      "uri": "css/style.css"
    }
  ],
  "libs": [
      {
          "uri": "libs/jspdf.js"
      },
                {
          "uri": "libs/jspdf.min.js"
      },
                {
          "uri": "libs/jspdf.plugin.autotable.js"
      },
                {
          "uri": "libs/jspdf.umd.min.js"
      }
  ]
}

像这样包含在我的控制器中:

    sap.ui.define([
        "sap/ui/core/mvc/Controller",
        "../model/formatter",
        "sap/ui/core/Fragment",
        "../libs/jspdf",
        "../libs/jspdf.plugin.autotable",
        "../libs/jspdf_debug"
],
    /**
     * @param {typeof sap.ui.core.mvc.Controller} Controller
     */
    function (Controller, formatter, Fragment, syncStyleClass,jspdf, jspdf_autotable, jspdf_debug) {
        "use strict";
        //jQuery.sap.require("libs/jspdf_debug");
        //jQuery.sap.require("libs/jspdf.plugin.autotable");

如果我将 jquery 放回应用程序中,则会在启动时崩溃并出现此错误:

“ModuleError:无法从资源/libs/jspdf_debug.js 加载‘libs/jspdf_debug.js’”

希望有人可以帮助我,期待您的建议!

4

1 回答 1

1

如果您还没有这样做,请迁移到 ui5-tooling。之后,您可以包含通过 npm 安装的所有内容。

UI5-Tooling 有一个非常不清楚的文档和学术处理......但有一个lodash的例子:

specVersion: "2.5"
type: application
metadata:
  name: my.application
--- # Everything below this line could also be put into the ui5.yaml of a standalone extension module
specVersion: "2.5"
kind: extension
type: project-shim
metadata:
  name: my.application.thirdparty
shims:
  configurations:
    lodash: # name as defined in package.json
      specVersion: "2.5"
      type: module # Use module type
      metadata:
        name: lodash
      resources:
        configuration:
          paths:
            /resources/my/application/thirdparty/: "" # map root directory of lodash module

基本上,

  • 也通过 npm 安装 jspdf:npm i jspdf --save-dev
  • 检查 ```node_modules`` 中的 jspdf 并找到 dist 文件夹
  • 调整项目垫片
  • 如果您不确定路径等,请临时安装 lodash,这样您就可以比较路径

一切就绪后,您可以通过 URL 访问文件。如果这可行,您还可以在运行时加载它们,sap.ui.require它们是您构建的一部分。

一些模块在全局范围内自行安装它们,因此sap.ui.require将返回 undefined 并且导入的内容位于window.myGlobalUtilSTuff.

于 2021-10-07T08:49:49.340 回答