// import {$root} from "../libs/protobuf/area.js";
// import ProtoArea = com.bee.protobuf.ProtoArea;
import com from "area";
这几种办法都不行。根本找不到里面的定义。按照官方文档的说法,.d.ts放在了libs下面。.js放在了bin/libs下面。
别的ide就正常,laya就不正常。
哪种是对的?在laya的ide里,
怎么才能import一个export的类或一个export的模块?
于是我就写了两个demo
我在VS Code里测了,发现可以正常,但LayaAir IDE不正常。源码我上传了。
laya的是TestImport.rar
vscode的是vscode.rar
关键的几个文件都是相同的。index.html、tsconfig.json、以及两个类。为了测试方便,把Laya.init这句注释掉。
(另外我把laya的项目文件夹用vscode打开来编译运行,也可以正常,LayaAir IDE却不行。其差别最主要应该是在launch.json不同)
我发现有一点差异,下面这行
<script type="text/javascript" src="node_modules/requirejs/require.js"></script>
,而vscode里可以注释掉,还是正常。
用VS Code测试:

运行后一切正常:

而layaAir IDE,如果注释掉这一行,就一片空白,不会输出任何东西,
<script type="text/javascript" src="node_modules/requirejs/require.js"></script>
而加上这一行,运行后就会报下面的错:
Error: Mismatched anonymous define() module: function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const t = require("./test/TestExportClass");
// 程序入口
class GameMain {
constructor() {
// Laya.init(600,400);
console.log("start");
var exportCls = new t.TestExportCls();
exportCls.callFunc();
}
}
new GameMain();
}
http://requirejs.org/docs/errors.html#mismatch
at makeError (file:///E:/laya/TestImport/bin/node_modules/requirejs/require.js:168:17)
at intakeDefines (file:///E:/laya/TestImport/bin/node_modules/requirejs/require.js:1254:36)
at file:///E:/laya/TestImport/bin/node_modules/requirejs/require.js:1452:25
附件:
TestImport.rar
vscode.rar