Closed azzg closed 1 year ago
node v16.x 对于 default 导出的处理有点奇怪,如上图
也可能是 esbuild 对于 default 导出处理得有些bug
哪个版本的node可以正常调用服务器端出码的代码呢
@azzg 可以尝试别用 "type": "module" 这种模式,使用传统的 require 的方式应该是好的(可以考虑使用 babel 来将 import 转换为 require)
node 版本换成14.17.0 也是这样,另外去掉 "type": "module"后,使用require的方式,也是有同样的问题
同样有这样的问题 , node版本 v14.15.0 , 采用require的方式引入的, 报同样的错.
另外看到readme里面有关于出码这块的专门的群, 请问怎么可以进呢?
This issue is stale because it has been open 10 days with no activity. Remove stale label or comment or this will be closed in 2 days.
@alilc/lowcode-code-generator@1.0.6 遇到了同样的问题,有解决办法吗
使用require方式引入应该不会报错的
@Clarence-pan 能否提供一份环境信息?Node版本14.19.0,使用require引入一样的报错。
看了下源码,solutions是默认导出,引入后从default下取值就可以了。 使用ESM和CommonJS都可以
const CodeGenerator = require('@alilc/lowcode-code-generator');
const lowcodeGenerate = async (schema) => { const projectBuilder = CodeGenerator.default.solutions.icejs(); const project = await projectBuilder.generateProject( schema, // 编排搭建出来的 schema ); // 写入磁盘 await CodeGenerator.default.publishers.disk().publish({ project, // 上一步生成的 project outputPath: '/path/to/your/output/dir', // 输出目录 projectSlug: 'your-project-slug', // 项目标识 }); }
这个问题本质上是在 CommonJS/CJS 和 ESM 混用时,如何处理 export default 的问题~
在常见的转译器,比如 typescript compiler / webpack,都有相应的机制去抹平处理 CJS / ESM 的差异,比如 ts 是 esModuleInterop,webpack 是默认支持。
假如没有用到以上,那就只能自己 require('@alilc/lowcode-code-generator').default 了~
Describe the bug (required) / 详细描述 bug(必填)
使用官网示例代码进行服务器端出码,运行时,直接报solutions 未定义,官方代码如下:
本地代码如下: