目前使用3.8.5,tsconfig指定ES2020,使用import动态导入只能支持固定字符串的写法,传入静态变量或者使用字符串模板都会报错:Chunk ‘chunks/60/game’ has a bad timestamp.
代码如下:
const name = “game”;
import(./${name}).then((module) => {
console.log(“Module loaded:”, module);
});
我看到官方23年提到这是JS的特性https://forum.cocos.org/t/topic/144395,说import必须是静态的,但是目前查到ES2020应该是支持传入字符串,包括AI也提到:
动态 import() 是 JavaScript 的原生功能(从 ES2020 开始支持),它返回一个 Promise ,允许在运行时加载模块。动态 import() 的路径可以是动态生成的字符串
目前我想了解的是:
1.目前Cocos中动态import只支持固定字符串,是Creator的限制还是确实是JS语法限制,
2.看报错堆栈感觉像编辑器做的检查,不知道app.asar\node_modules@editor这个路径下的ts脚本有没有办法查看
-
Creator 版本:3.8.5
-
目标平台: 原生和网页都能100%复现
-
首个报错:
[PreviewInEditor] {hidden(::SceneExecutorImportExceptionHandler::)} AssertionError [ERR_ASSERTION]: Chunk ‘chunks/60/game’ has a bad timestamp.
at new AssertionError (node:internal/assert/assertion_error:451:5)
at Object.asserts (C:\ProgramData\cocos\editors\Creator\3.8.5\resources\app.asar\node_modules@editor\lib-programming\src\utils\asserts.ts
15)
at PackModInstantiation.instantiate (C:\ProgramData\cocos\editors\Creator\3.8.5\resources\app.asar\node_modules@editor\lib-programming\src\executor\pack-mod-instantiation.ts:85:13)
at C:\ProgramData\cocos\editors\Creator\3.8.5\resources\app.asar\node_modules@editor\lib-programming\src\executor\index.ts:143:34
at ExecutorSystem._instantiate (C:\ProgramData\cocos\editors\Creator\3.8.5\resources\app.asar\node_modules@editor\lib-programming\src\editor-systemjs\index.ts:167:30) {
generatedMessage: false,
code: ‘ERR_ASSERTION’,
actual: undefined,
expected: undefined,
operator: undefined
}
Error: [PreviewInEditor] {hidden(::SceneExecutorImportExceptionHandler::)} AssertionError [ERR_ASSERTION]: Chunk ‘chunks/60/game’ has a bad timestamp.
at C:\ProgramData\cocos\editors\Creator\3.8.5\resources\app.asar\node_modules@editor\lib-programming\src\executor\index.ts:143:34
at ExecutorSystem._instantiate (C:\ProgramData\cocos\editors\Creator\3.8.5\resources\app.asar\node_modules@editor\lib-programming\src\editor-systemjs\index.ts:167:30) {
generatedMessage: false,
code: ‘ERR_ASSERTION’,
actual: undefined,
expected: undefined,
operator: undefined
}
at Logger._logHandler (C:\ProgramData\cocos\editors\Creator\3.8.5\resources\app.asar\builtin\scene\dist\script\3d\manager\startup\log.ccc:1:487)
at Logger.record (C:\ProgramData\cocos\editors\Creator\3.8.5\resources\app.asar\node_modules@base\electron-logger\lib\renderer.ccc:1:458)
at console. (C:\ProgramData\cocos\editors\Creator\3.8.5\resources\app.asar\node_modules@base\electron-logger\lib\renderer.ccc:1:1414)
at console.error (C:\ProgramData\cocos\editors\Creator\3.8.5\resources\app.asar\node_modules@sentry\src\instrument\console.ts:40:20)
at ScriptManager._handleImportException (C:\ProgramData\cocos\editors\Creator\3.8.5\resources\app.asar\builtin\scene\dist\script\3d\manager\scripts.ccc:1:5408)
at Executor.importExceptionHandler [as _importExceptionHandler] (C:\ProgramData\cocos\editors\Creator\3.8.5\resources\app.asar\builtin\scene\dist\script\3d\manager\scripts.ccc:1:3604)
at Executor._onModuleLoaded (C:\ProgramData\cocos\editors\Creator\3.8.5\resources\app.asar\node_modules@editor\lib-programming\src\executor\index.ts:401:22)
at SystemJS.onload (C:\ProgramData\cocos\editors\Creator\3.8.5\resources\app.asar\node_modules@editor\lib-programming\src\executor\index.ts:99:18)
at triggerOnload (C:\ProgramData\cocos\editors\Creator\3.8.5\resources\app.asar\node_modules@editor\lib-programming\static\executor\systemjs-bridge\out\index.js:270:10)
at C:\ProgramData\cocos\editors\Creator\3.8.5\resources\app.asar\node_modules@editor\lib-programming\static\executor\systemjs-bridge\out\index.js:347:5
