家人们,谁懂啊? 同一个文件被执行两次了

  • Creator 版本:3.7.4

  • 目标平台:chrome浏览器, 没运行前, 编辑器本身也会这样

  • 编辑器操作系统: win 10

  • 重现概率: 百分百, 清理过缓存, 重启, 编辑器本身

  • 问题是:有个文件被执行两次了, 测试了一下其他文件, 好像又没有这个问题, 因为是直接在最外层, 所以cocos编辑器里也可以看到执行了两次

  • demo代码: assets.zip (5.7 KB)

M8X39MMJCD`B)K}9XN8}CZ8
NOBO(IFY_FU%G)B0)F{4

PO3UCF11UA`{50VK~AG8

* 堆栈1:
DylPoolNode.ts:32 测试一句话是否执行两次
execute @ DylPoolNode.ts:32
doExec @ system.js:488
postOrderExec @ system.js:478
(匿名) @ system.js:467
postOrderExec @ system.js:465
(匿名) @ system.js:467
postOrderExec @ system.js:465
(匿名) @ system.js:467
postOrderExec @ system.js:465
(匿名) @ system.js:467
postOrderExec @ system.js:465
(匿名) @ system.js:467
postOrderExec @ system.js:465
(匿名) @ system.js:467
postOrderExec @ system.js:465
(匿名) @ system.js:412
Promise.then(异步)
topLevelLoad @ system.js:411
(匿名) @ system.js:235
Promise.then(异步)
systemJSPrototype.import @ system.js:233
systemJSPrototype.import @ system.js:799
_import @ system.js:325
(匿名) @ game.ts:941
_loadCCEScripts @ game.ts:937
(匿名) @ game.ts:840
Promise.then(异步)
init @ game.ts:840
(匿名) @ main.js:1
(匿名) @ main.js:1
(匿名) @ main.js:1
o @ main.js:1
Promise.then(异步)
c @ main.js:1
(匿名) @ main.js:1
n @ main.js:1
(匿名) @ main.js:1
(匿名) @ index.js:1
(匿名) @ index.js:1
(匿名) @ index.js:1
s @ index.js:1
* 堆栈2
DylPoolNode.ts:32 测试一句话是否执行两次
execute @ DylPoolNode.ts:32
doExec @ system.js:488
postOrderExec @ system.js:478
(匿名) @ system.js:467
postOrderExec @ system.js:465
(匿名) @ system.js:467
postOrderExec @ system.js:465
(匿名) @ system.js:467
postOrderExec @ system.js:465
(匿名) @ system.js:412
Promise.then(异步)
topLevelLoad @ system.js:411
(匿名) @ system.js:235
Promise.then(异步)
systemJSPrototype.import @ system.js:233
systemJSPrototype.import @ system.js:799
_import @ system.js:325
(匿名) @ game.ts:941
_loadCCEScripts @ game.ts:937
(匿名) @ game.ts:840
Promise.then(异步)
init @ game.ts:840
(匿名) @ main.js:1
(匿名) @ main.js:1
(匿名) @ main.js:1
o @ main.js:1
Promise.then(异步)
c @ main.js:1
(匿名) @ main.js:1
n @ main.js:1
(匿名) @ main.js:1
(匿名) @ index.js:1
(匿名) @ index.js:1
(匿名) @ index.js:1
s @ index.js:1

没个demo还真看不出来 :joy:

我也觉得很为难,在考虑如何抽离出来

有没有不小心挂到其他节点上了 :13:

我这个文件不是挂脚本的, 而且打印放在最外层, 就是类的外面. 现在找到了会触发这个bug的那行代码了, 但还是不明白为什么会触发它, 因为这行代码我放在, 组件的start函数内, 而且我也在前面打印一下, 这个start函数都没有触发过, 但里面的内容还是影响这个问题

求帮忙看看, 已经上传代码了, 加起来代码总数也就大概 10行代码而已 代码在这里 assets.zip (5.7 KB)

找到触发点了, 其中一个导入路径多了一个斜杆, 然后就莫名执行两次代码了

2赞

我也按你的代码复现了,这个导入“//”导致文件被引入两次是什么原因呢?神奇!
我开始认为是TS翻译JS的问题,但是require同一文件多次,也只有第一次有效。

再加个/会不会引入三次?

不会,我试了最多两次。
我开始也以为函数这Import的问题,然后我再重复引用等几种方法都只有两次,我用了全局对象window去计数。