使用napi\_run\_script\_path接口执行包内abc文件的使用限制
=========================================

**问题现象**

1.  通过这个API执行的abc文件运行在哪个JS上下文，是否可以与主线程进行交互？
2.  每次执行napi\_run\_script\_path时都会新建一个 JS 上下文。执行完成后，该上下文会被释放，不会一直存在。
3.  napi\_run\_script\_path接口的使用方法。

**解决措施**

1.  通过napi\_run\_script\_path接口传入特定的环境（env），abc文件将在对应的线程中运行。如果在worker中执行，可以使用worker与主线程的通信机制与主线程进行交互。
2.  其生命周期与其他文件相同，由VM管理，开发者无需感知。
3.  napi\_run\_script\_path接口接受三个参数：env、待执行的单个JS文件编译成的ABC文件的沙箱路径，以及一个返回值。针对包内abc文件接口路径说明：
    
    目前仅接受rawfile文件夹下的abc文件。napi\_run\_script\_path接口会直接拼接当前HAP所在的沙箱路径/data/storage/el1/bundle/。例如，传入路径为entry/resources/rawfile/main.abc，则处理后的沙箱路径为/data/storage/el1/bundle/entry/resources/rawfile/main.abc。如果使用本接口，则只可将abc文件放到rawfile文件夹下，如果直接使用沙箱路径，后续程序出现问题，则非接口问题。
    

由于该接口的局限性，建议后续开发者直接使用JSVM来运行JS代码，可以参考：[JSVM-API简介](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/jsvm-introduction)。