【求助】使用CocosCreator制作编辑器时遇到的文件保存问题

事情是这样的,我想使用CocosCreator整一个类似于RPG Maker那样的事件编辑。于是我创建了一个插件面板,面板内直接嵌套了cocos自己的web包,然后我想着这样就可以沿用游戏的代码,直接在cocos里面渲染游戏地图画面,然后就可以选中地图中的事件进行编辑……
然而我发现这时候保存成了一个问题,使用fileUtils的话似乎不支持H5,fs的话也没法直接用,网上找到的一些替代方法比如浏览器下载也需要自己设置路径等,非常麻烦……如果在这种情况下要想直接将结果保存在特定路径,想问一问有没有什么好的解决方案。
新人开发者,若有理解不对之处请包涵!

File System Access API了解一下

1赞

大概去尝试了一下,好像还是没法直接用……因为我这个情况是把cocos嵌套进插件面板里的,会报错提示Cross origin sub frames aren’t allowed to show a file picker

Electron了解下

编辑器中有nodejs的环境,你可以直接引入nodejs的包。具体api可以看下nodejs官网文档

试了一下,他提示Cocos Creator 不提供 Node.js 内置模块
不知道是不是我操作有问题……

具体报错和你的实现发一下看看吧

[Scene] {hidden(::SceneExecutorImportExceptionHandler::)} Error: Error: 无法加载模块 node:fs,这是因为:Cocos Creator 不提供 Node.js 内置模块。
at Object.execute (file:///E:/Project/CocosCreatorMagictowerTemplate/trunk/temp/programming/packer-driver/targets/editor/chunks/5c/5c1303289570f9be683c8fa8bcdfd5c2a58b307e.js:8:13)
at doExec (C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\node_modules@editor\lib-programming\static\executor\systemjs-bridge\out\index.js:517:30)
at postOrderExec (C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\node_modules@editor\lib-programming\static\executor\systemjs-bridge\out\index.js:508:21)
at C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\node_modules@editor\lib-programming\static\executor\systemjs-bridge\out\index.js:493:28
at Array.forEach ()
at postOrderExec (C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\node_modules@editor\lib-programming\static\executor\systemjs-bridge\out\index.js:491:10)
at C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\node_modules@editor\lib-programming\static\executor\systemjs-bridge\out\index.js:493:28
at Array.forEach ()
at postOrderExec (C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\node_modules@editor\lib-programming\static\executor\systemjs-bridge\out\index.js:491:10)
at C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\node_modules@editor\lib-programming\static\executor\systemjs-bridge\out\index.js:440:12
Error: [Scene] {hidden(::SceneExecutorImportExceptionHandler::)} Error: Error: 无法加载模块 node:fs,这是因为:Cocos Creator 不提供 Node.js 内置模块。
at C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\node_modules@editor\lib-programming\static\executor\systemjs-bridge\out\index.js:493:28
at Array.forEach ()
at postOrderExec (C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\node_modules@editor\lib-programming\static\executor\systemjs-bridge\out\index.js:491:10)
at C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\node_modules@editor\lib-programming\static\executor\systemjs-bridge\out\index.js:493:28
at Array.forEach ()
at postOrderExec (C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\node_modules@editor\lib-programming\static\executor\systemjs-bridge\out\index.js:491:10)
at C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\node_modules@editor\lib-programming\static\executor\systemjs-bridge\out\index.js:440:12
at Logger._logHandler (C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\builtin\scene\dist\script\3d\manager\startup\log.ccc:1:318)
at Logger.record (C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\node_modules@base\electron-logger\lib\renderer.ccc:1:458)
at console.error (C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\node_modules@base\electron-logger\lib\renderer.ccc:1:1414)
at ScriptManager._handleImportException (C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\builtin\scene\dist\script\3d\manager\scripts.ccc:1:5259)
at Executor.importExceptionHandler [as _importExceptionHandler] (C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\builtin\scene\dist\script\3d\manager\scripts.ccc:1:3396)
at Executor._onModuleLoaded (C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\node_modules@editor\lib-programming\src\executor\index.ts:316:22)
at SystemJS.onload (C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\node_modules@editor\lib-programming\src\executor\index.ts:77:18)
at triggerOnload (C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\node_modules@editor\lib-programming\static\executor\systemjs-bridge\out\index.js:270:10)
at doExec (C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\node_modules@editor\lib-programming\static\executor\systemjs-bridge\out\index.js:538:7)
at postOrderExec (C:\ProgramData\cocos\editors\Creator\3.7.0\resources\app.asar\node_modules@editor\lib-programming\static\executor\systemjs-bridge\out\index.js:508:21)



image

项目脚本中是不支持nodejs的,应该在你写的插件中使用,可以看下插件文档https://docs.cocos.com/creator/manual/zh/editor/extension/readme.html

之所以是在项目里面是为了沿用一大部分的游戏代码……而且如果只能开发插件的话好像还得用electron啥的……

这个可以,不错