puerts-ts-loader
puerts-ts-loader copied to clipboard
Sample1 关于 .mts 后缀问题
运行sample1 看到所有ts文件都是以 .mts 结尾的,我尝试修改为.ts 在不加 PUERTS_TSLOADER_DISABLE_EDITOR_FEATURE 宏定义的时候没问题 Editor运行okay; 但是 加了宏定义 就会报错,但是 如果依然使用 .mts 然后 Release TS To Resource 这时候 出来的是 .mjs 文件 这时候运行没问题 想问下 为什么
mts mjs不是挺好用的。。为啥要改回去 另外报错就提供报错信息,不然不知道你说啥
主要的顾虑是 因为 怕其他人开发后缀命名不按这个.mts来 因为通常都是 .ts .js 下面是case的 详情
using System.Collections.Generic;
using UnityEngine;
using Puerts;
using Puerts.TSLoader;
public class TestLoader: ILoader
{
public bool FileExists(string specifier)
{
return specifier == "test.js";
}
public string ReadFile(string specifier, out string debugpath)
{
debugpath = "test.js"; #修改了这里 之前是.mjs
return "console.log('test Runtime')";
}
}
public class TSLoaderExample : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
var loader = new TSLoader();
// UseRuntimeLoader在Runtime下会形成链式处理。在Editor下不生效。
// 执行顺序是Loader加入顺序的倒序
// 通过菜单命令可以快速把TS构建到Resources目录供DefaultLoader使用
loader.UseRuntimeLoader(new DefaultLoader());
// Editor下打开PUERTS_TSLOADER_DISABLE_EDITOR_FEATURE可以测试runtime下的效果。
loader.UseRuntimeLoader(new TestLoader());
JsEnv env = new JsEnv(loader);
env.ExecuteModule("test.ts");
env.ExecuteModule("main.ts");
}
// Update is called once per frame
void Update()
{
}
}
开启宏 PUERTS_TSLOADER_DISABLE_EDITOR_FEATURE 运行 输出 test Runtime 运行报错
Exception: __puer_execute__.mjs:183: Error: [Puer002]import main.ts failed: module not found
Error: [Puer002]import main.ts failed: module not found
at global.__puer_resolve_module_url__ (__puer_execute__.mjs:183:23)
Puerts.GenericDelegate.Func[T1,TResult] (T1 p1) (at Library/PackageCache/[email protected]/Runtime/Src/Default/JSType/GenericDelegate.cs:521)
Puerts.JsEnv.ExecuteModule (System.String specifier) (at Library/PackageCache/[email protected]/Runtime/Src/Default/JsEnv.cs:315)
TSLoaderExample.Start () (at Assets/Scripts/TSLoaderExample.cs:38)
总之 [Puer002] 代表FileExists返回了false