【问题标题】:Typescript. KnockoutJs. Uncaught ReferenceError: require is not defined打字稿。淘汰赛Js。未捕获的 ReferenceError:未定义要求
【发布时间】:2016-10-17 10:39:03
【问题描述】:

目前我正在关注official ts-ko demo。当我直接提到 K​​o 时:

/// <reference path="./node_modules/@types/knockout/index.d.ts" /> 

没有错误。但是当通过以下方式添加引用时:

import * as ko from "knockout";

抛出错误:

Uncaught ReferenceError: require is not defined

Typescript 演示 states 那:

我们需要获取 Knockout 本身以及称为 RequireJS 的东西。

定义 RequireJs 的正确方法是什么?为什么需要使用 requirejs 进行“导入”案例?

package.json

  "dependencies": {
    "jquery": "3.1.1",
    "@types/jquery": "2.0.33",
    "knockout": "3.4.0",
    "@types/knockout": "1.1.5"
  }

【问题讨论】:

    标签: typescript knockout.js npm


    【解决方案1】:

    来自 RequireJs homepage。 RequireJS 是一个 JavaScript 文件和模块加载器。

    定义RequireJs的正确方法是什么?

    您可以只从脚本标签中引用您的 RequireJ。

    <script src="scripts/require.js" type="text/javascript"></script>
    

    并定义您的 requireJs 配置。

    require.config({
        baseUrl: 'app',
        paths: {
            text: "../scripts/text" //Path to text.js, you will use this to load html that will be used in your ko components,
            widgets: "widgets",
            app: "."
        }
    });
    

    然后你就可以像这个一样注册你的组件了。

    ko.components.register(name, {
        viewModel: { require: path },
        template: { require: 'text!'+ path +'.html' }
    });
    

    为什么“import”的情况下需要使用requirejs?

    为了异步加载你的 ko 组件,你需要一个像 RequireJs 这样的模块加载器。看到这个documentation

    【讨论】:

    猜你喜欢
    • 2019-12-19
    • 2017-03-21
    • 2016-12-13
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 2015-02-28
    相关资源
    最近更新 更多