requirejs returns 在 asp.net 核心应用程序中未定义

requirejs returns undefined in asp.net core application

我安装了 requirejs nuget 包并添加到我的 Index.cshtml 这个:

<script src="~/lib/requirejs/require.js" data-main="/js/scripts/tetromino-client/client.js"></script>

我的项目结构如下所示:

wwwroot
   |-js
     |-scripts
        |-tetromino-client
           |-client.js
           |-block.js
Views
  |-Home
     |-Index.cshtml

client.js

requirejs(["block"], function (Block) {
    var block = new Block(); // Block is undefined
    console.log(block.value);
});

block.js

function Block() {
    this.value = 50;
}

Requirejs 无法解析 block.js 和 returns 未定义。我做错了什么?

你缺少的是 requirejs.config 调用 baseUrl,告诉 RequireJS 去哪里寻找额外的库:

requirejs.config({baseUrl: './js/scripts/tetromino-client'}):

requirejs(["block"], function (Block) {
    var block = new Block(); // Block is undefined
    console.log(block.value);
});

然后在定义block模块时需要使用define语法:

define(function () {
    function Block() {
        this.value = 50;
    }

    return Block;
});