LeviLamina icon indicating copy to clipboard operation
LeviLamina copied to clipboard

ESM support in Node.Js (`import` statements)

Open Jasonzyt opened this issue 2 years ago • 2 comments

Exceptions module

ScriptEngine

Operating System

Windows Server 2022

LiteLoader version

3169bad Private Build

BDS version

1.19.10

What happened?

Cannot use any import statement in plugins.

Steps to reproduce?

Create a nodejs plugin with import statements and run bds

Relevant log output

node:embedder_main_0:7
import {rename} from 'fs';
^^^^^^

[SyntaxError: Cannot use import statement outside a module]

Plugin list

No response

Jasonzyt avatar Aug 01 '22 07:08 Jasonzyt

解决方案:https://blog.csdn.net/sinat_36521655/article/details/109863364 这貌似不是llse的问题,在一般的nodejs环境中也会发生 只需要创建package.json文件指明type类型为module即可解决

Hesitate-P avatar Aug 15 '22 09:08 Hesitate-P

解决方案:https://blog.csdn.net/sinat_36521655/article/details/109863364 这貌似不是llse的问题,在一般的nodejs环境中也会发生 只需要创建package.json文件指明type类型为module即可解决

非也非也,由于LLSE自行编写了NodeJs的启动代码以使其能够嵌入式运行,因此此问题是启动代码由于尚未对ESM做适配而导致。 修改package.json并不有效,因为自行编写的NodeJs启动代码目前仅对入口点文件这一参数进行了解析,以及npm会使用dependency参数,其他的参数还没有进行解析处理,需要等待后续更新的时候再进行功能拓展

目前查遍了互联网,未发现有 支持ESM的自行编写启动代码的相关示例。可能需要深入研究NodeJs源码进行模仿,难度较大,所以暂未实现,等待后续更新

yqs112358 avatar Aug 15 '22 10:08 yqs112358