This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCSTUDIO:CCS20 导入中的新脚本环境如何支持 JavaScript 源文件?

Guru**** 2489685 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1540045/ccstudio-how-does-the-new-scripting-environment-in-ccs20-import-support-javascript-source-files

部件号:CCSTUDIO


工具/软件:

我们正在尝试将一套 20 个 DSS JavaScript 测试脚本从 CCS 版本 12 移植到 CCS 版本 20。 这套 JavaScript 文件依赖于从另外 20 个 JavaScript 源文件中导入源文件、这些源文件使用 dss“load"命令“命令提供较低级别的支持。  

我在网络中搜索了有关如何在新脚本环境中导入外部 JavaScript 源文件的信息。 有一些相互矛盾的建议、我们曾尝试过其中一些建议、但其中没有一项建议奏效。 包括使用 require 或 import 关键字。  

CCS20 Scripting 文件夹中两个非常基本的示例 JavaScript 文件对于如何从 DSS 移植 40 个相互依赖的 JavaScript 文件提供了线索。  

TI 能否提供任何在新脚本环境中用于替换 DSS 加载功能的正确工具和语法示例?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Thomas:

    我已将此主题指派给 CCS 脚本专家。 他们应该能够很快提供更多的信息。

    谢谢、

    Ricky

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、Ricky。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我做了一些实验、发现 ESM 语法使用“module.exports"或“或“export"将“将共享函数或变量公开到其他源文件、并使用“import"{list}“{list}“from"</s>“ “ 为了将公开的内容包含到另一个源文件中、似乎可以根据需要使用 node.js 和 json 下的 CCS 版本 20 脚本。

    这一切都是以源文件和接收源文件中的声明的形式完成的、并且是在 JavaScript 执行之前定义的。

    因此、使用此 ESM 语法时无法在程序执行期间公开一个从站源文件中的内容并动态地将其导入到顶层源文件中。

    在  CCS 版本 12 中、我们从 DSS 移植的应用程序中、使用“load"命令“命令来包含文件。 执行时、顶层模块打印要执行的操作的选项表。 如果选择了列表中的其中一项、则会在运行时调用“load"命令“命令以包含执行该选项的源文件。 这是一个非常干净的接口、因为在包含的文件中开始执行的被调用函数可以在每个可包含的从属源文件中重复使用相同的函数名称。 没有冲突、因为只包括一个可选的从属文件。

    我的后续问题是:

    使用 ESM 语法是否有一种方法来包含来自 从站源文件的资源、该从站源 文件将在运行时动态地将包含内容执行到更高级别的源文件中、这可以通过 DSS 中的加载命令来完成? 如果在执行前包括所有从属文件、并且必须在每个可包含的从属文件中使用唯一的顶层函数名称、这将是非常低效的、但如果无法在运行时动态包含、这是我能想到的唯一选择。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    使用 ESM 语法是否有一种方法来 包含从一个从属源文件中的资源、该源 文件将在运行时动态地执行 include 到更高级别的源文件中、这可以通过 DSS 中的 load 命令来完成? 如果在执行前包括所有从属文件、并且必须在每个可包含的从属文件中使用唯一的顶层函数名称、这将是非常低效的、但如果无法在运行时动态包含、这是我能想到的唯一选择。  [/报价]

    我与工程部门讨论了这个问题、他们建议查看动态导入功能:

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import

    他们还建议查看以下静态导入功能:

    从“module-name"导“导入*作为 name;//而不是从“module-name"导“导入{ foo }

    …μ s

    name.foo();

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    KI — 感谢转发 TI 工程团队的建议。 这听起来好像我需要什么。 如果我在转换和测试脚本时遇到任何问题、我会通知您。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我在 node.js 调试程序中遇到语法错误问题。 所以我回到了 TI 提供的名为 interactive .js 的简单示例 JavaScript 源文件。 运行调试器时、会在第一个源代码行上抛出语法错误:  

    const repl = require(“repl")“);
    调试器立即停止、并显示错误消息: ReferenceError: Required 未在 ES 模块范围内定义、您可以改用导入。 建议使用*。CJS 文件类型重命名文件。
    当我运行 interactive.CJS 上的调试器时、调试器显示错误消息: ReferenceError:initScripting is not defined。
    由于您的建议是使用 ES 模块语法中的 import... from 语法来包括源文件、因此我尝试将源文件重命名为 interactive .mjs。 当调试器在该文件上运行时、它会生成错误消息:  ReferenceError: Required 未在 ES 模块范围中定义、您可以改用 import。
    那么、在交互式.js 示例程序中完成前两行不会导致 node.js 调试器语法错误的正确语法是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Thomas:

    您可以尝试使用随附的文件吗? 这是一个更新的版本、将随下一个版本一起提供。 我将扩展名更改为 txt、请将其重命名为*。MJs 扩展名(不是*。js)。

    e2e.ti.com/.../interactive.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    KI — 我尝试在 VSCode 和 CCS 20 Theia 上的 node.js 调试器中运行新的 Interactive .MJs 程序。  

    在 CCS 20 Theia 中运行/开始调试希望运行基于工程的固件调试器。 我发现了一篇关于非项目调试的文章。 我在顶层 JavaScript 文件夹中的.theia 文件夹中添加了用于 launch.json 的建议子句、并根据我的工程路径层次结构量身定制了“程序“行。 然后、我将 CCS Theia 打开到 JVScript 文件夹、该文件夹保存 interactive .mjs 源文件和包含 launch.json 文件的.theia 文件夹。 调试器生成以下错误消息:

    C:\Program Files\nodejs\node.exe --experimplement-network-checkout \JVScript\Interactive .MJs
    进程已退出、代码为 1

    尝试在 VSCode 中调试 Interactive .MJs 时、我收到错误:
    未捕获的引用错误引用错误:未定义 initScripting
    AT ( JVScript\interactive。MJs:9:12)
    运行时 ( /internal/modules/esm/module_job:274:25)
    ——等待——
    在 runEntryPointWithESMLoader ( /internal/modules/run_main:138:19)
    在 executeUserEntryPoint ( /internal/modules/run_main:175:5)
    AT ( /internal/main/run_main_module:36:49)

    这似乎表明我需要向 VSCode 提供有关如何链接 DSS 资源的信息。 但我没有在文档中找到如何做到这一点。

    是否可以帮助我配置任一 IDE 以便能够调试 Interactive .MJs JavasScript 源文件?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我没有意识到您在尝试调试它。  

    您是否看到了用户指南中有关调试脚本的一节?

    https://software-dl.ti.com/ccs/esd/documents/users_guide_ccs/ccs_debug-scripting.html#debugging-a-script

    但是、此处的示例用于标准*。js 文件。 对于*。MJs 文件、我需要进行以下调整、以便我的 interactive .MJs 文件看起来像:

    import scripting from 'scripting';
    import * as repl from "repl";
    
    const ds = scripting.initScripting(); // for VS Code / Theia
    
    console.log("Interactive scripting session started.");
    console.log("Debugger scripting object is bound to 'ds'.");
    console.log("Use Ctrl+D plus Return to exit.")
    await new Promise((resolve, reject) => {
    	try {
    		const scriptRepl = repl.start({ prompt: ">> " });
    		scriptRepl.context["ds"] = ds;
    		scriptRepl.on("exit", () => { ds.shutdown(); resolve(); });
    	} catch (e) {
    		reject(e);
    	}
    });

    然后使用 VS Code 进行调试。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    KI — 这是我正在寻找的*。MJs 语法等效项。 所以你修改的源代码交互. MJs 是我想要的。 谢谢!

    我的原始问题假设 Interactive .mjs 会与 CCS 12 及更早版本中的 dss.bat 功能重复。 我们使用 dss.bat 从命令行执行 JavaScript 程序、其中包括 DSS 支持。 然后、该程序可以打印到控制台并接收操作员键入的数据。 我们需要在移植到 CCS 版本 20 的程序中复制该“交互“功能。

    Interactive .MJs 的目的完全不同。 它允许用户逐行输入 JavaScript 命令或执行 JavaScript 程序。 但是,如果有能力打印提示和接收操作员 在执行 JavaScript 程序时输入的文本,我看不到如何做到这一点。 如果交互式.MJ 中的演示源代码附带说明其目的的注释、将会很有帮助。  

    因此,现在我已经发现 Interactive .js/MJs 不提供 dss.bat 的功能,我的问题是:

    在 CCS 20 版的脚本环境中、是否存在与 dss.bat 等效的代码、如果存在、在哪里可以找到与之相关的文档?

    在 CCS 版本 12 中的 DSS 脚本下、在 dss.bat 下执行程序后、用于定义并从包含的控制台获取输入的 JavaScript 语法:  

      print(“输入测试案例编号:“);
      var stdin =新的 BufferedReader(新的 InputStreamReader(系统[“in"]);</s>“
      OperatorEnteredString  = stdin.readline()
      
    我知道打印被 console.log 取代。 后续命令是否可以在 CCS 版本 20 下的 DSS 脚本中使用? 如果是、如何 使用*。MJs 语法使它们在 node.js 导入下正常工作?
    顺便说一下、我尝试从命令行运行 interactive.Mb。 它产生了:  

    [53388:0815/055538.792:error:cache_util_win.cc(20)]无法移动缓存:访问被拒绝。 (0x5)
    [53388:0815/055538.793:错误:disk_cache.cc (208)]无法创建缓存
    [main 2025-08-15T12:55:38.875Z] update#setState idle
    [MAIN 2025-08-15T12:55:38.878Z]错误:互斥量已存在
    在 YT.U (C:\Users\Public\Programs\VSCode-Win32-x64-1.93.1\resources\app\out\vs\code\electron-main\main.js:118:71351)
    [58812:0815/055538.921:错误:cache_util_win.cc (20)]无法移动缓存:访问被拒绝。 (0x5)
    [58812:0815/055538.921:错误:cache_util_win.cc (20)]无法移动缓存:访问被拒绝。 (0x5)
    [58812:0815/055538.921:错误:cache_util_win.cc (20)]无法移动缓存:访问被拒绝。 (0x5)
    [58812:0815/055538.930:错误:disk_cache.cc (208)]无法创建缓存
    [58812:0815/055538.930:错误:GPU_DISK_CACHE.cc (711)] GPU 缓存创建失败:–2
    [58812:0815/055538.931:错误:disk_cache.cc (208)]无法创建缓存
    [58812:0815/055538.931:错误:GPU_DISK_CACHE.cc (711)] GPU 缓存创建失败:–2
    [58812:0815/055538.931:错误:disk_cache.cc (208)]无法创建缓存
    [58812:0815/055538.932:错误:GPU_DISK_CACHE.cc (711)] GPU 缓存创建失败:–2
    [58812:0815/055541.732:error:service_worker_storage.cc (2016)]未能删除数据库:数据库 IO 错误
    [main 2025-08-15T12:55:44.872Z] vscode-file:拒绝从 vscode-file 加载资源 c:\Users\Public\Programs\Vscode-Win32-x64-1.96.0\resources/app\extensions\theme-SETI\icons\SETI.woff:Protocol(原始 URL:vscode-file://vscode-app/c:/Users/Public/Programs/VSCode-win32-x64-1.96.0/resources/app/extensions/theme-seti/icons/seti.woff)
    [main 2025-08-15T12:56:08.876Z] update#setState 检查更新
    [main 2025-08-15T12:56:09.021Z] update#setState 可供下载
    从 VSCode 中的终端运行时、会产生:
    Interactive .MJs:术语“interactive .MJs“不能识别为 cmdlet、函数、脚本文件或可操作程序的名称。
    检查名称的拼写、或者如果包含路径、请验证路径是否正确、然后重试。
    在行:1 字符:1 处
    +交互式.MJs
    +~~~~~~~~~~~~~~~
    + CategoryInfo : ObjectNotFound :( interactive .MJs : String )[], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
    从 VSCode 菜单命令 Run / Start Debugging 执行时、它会生成:
    C:\Program Files\nodejs\node.exe .\interactive .MJs
    未捕获的错误错误[ERR_MODULE_NOT_FOUND]:无法找到从导入的程序包“脚本“
    \interactive .MJs
    在 getPackageJSONURL ( /internal/modules/package_json_reader:268:9)
    在打包 Resolve ( /internal/modules/esm/resolve:768:81)
    在模块 Resolve ( /internal/modules/esm/resolve:854:18)
    缺省时 Resolve ( /internal/modules/esm/resolve:984:11)
    缺省时 Resolve ( /internal/modules/esm/loader:780:12)
    位于#cachedDefaultResolve ( /internal/modules/esm/loader:704:25)
    正在解决 ( /internal/modules/esm/loader:687:38)
    在 getModuleJobForImport ( /internal/modules/esm/loader:305:38)
    在_LINK ( /internal/modules/esm/module_job:137:49)
    ——等待——
    在 runEntryPointWithESMLoader ( /internal/modules/run_main:138:19)
    在 executeUserEntryPoint ( /internal/modules/run_main:175:5)
    AT ( /internal/main/run_main_module:36:49)
    无可用调试器、无法发送“变量“
    进程已退出、代码为 1
    那么、执行 JavaScript 文件 interactive.MJs 的环境是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ]我的原始问题假设 interactive .mjs 将与 CCS 版本 12 及更低版本中的 dss.bat 功能重复。 我们使用 dss.bat 从命令行执行 JavaScript 程序、其中包括 DSS 支持

    用于 CCS Scripting 的 dss.bat 等效代码为 run.bat。 它们都是系统 shell 脚本、旨在配置环境、然后将 javascript 传递给启动器实用程序/脚本以执行脚本。 当然、它在引擎盖下如何执行此操作是不同的。 但两个 shell 脚本的用途仍然相同。

    基本上、您遇到的主要问题是 DSS 在使用 Rhino 引擎同时执行 CCS 脚本是基于节点、js 的。 这是需要考虑的关键变化。 Print ()、readline () 等都是 Rhino 特有的。   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我在 CCS 安装文件夹.../ccs/scripting/docs/interfaces 中找到了新的脚本 API 文档、并逐步完成了这些更改。

    DSS 包含有关应传递给 DSS.bat 以执行 JavaScript 文件的参数的文档。 我在 CCS 20 脚本环境中找不到可传递到 run.bat 的参数的说明。 您能给我提供有关这方面的文档吗?

    今天上午、我创建了一个批处理文件、该文件使用 CCS 20 脚本文件夹中批处理文件的显式完整路径执行 run.bat、并作为 唯一参数传递了 interactive .mjs。 它启动了带有消息的交互式脚本会话  

    “交互式脚本会话已启动。
    调试器脚本对象绑定到“ds"。“。
    使用 Ctrl+D 加 RETURN 退出。
    >>“

    这显然是初学者的运气。 我不相信我已经改变了任何东西,但现在它失败了,消息:

    错误[ERR_MODULE_NOT_FOUND]:找不到从导入的软件包'脚本' \interactive .mjs“

    你有什么想法什么可能出了问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    DSS 包含有关应传递给 DSS.bat 以执行 JavaScript 文件的参数的文档。 我在 CCS 20 脚本环境中找不到可传递到 run.bat 的参数的说明。 您能向我指出这方面的文档吗?

    这不是 DSS/CCScripting 事情。 它只是将参数传递给 node.js。 dss.bat 允许将参数传递给脚本。 需要更新 run.bat 以支持模式的额外参数。  

    @"%~dp0\..\ccs_base\cloudagent\node.exe" "%~dp0\launcher.mjs" %1 %2 %3 %4 %5 %6 %7 %8 %9

    这将接受 9 个参数、如 dss.bat 所做的。

    然后在你的 js 脚本中,你可以得到像这样的参数:

    const args = process.argv;

    下面我们举例说明。 我只需在 CCS 附带的示例脚本的顶部添加以下行。

     // yourScript.js
    const args = process.argv;
    
    console.log("All arguments:", args);
    console.log("First custom argument:", args[2]); // file name
    console.log("Second custom argument:", args[3]); // first argument passed to the script
    console.log("Third custom argument:", args[4]); // second argument passed to the script
    
    console.log("Hello " + args[3] + " " + args[4] + "!");
    

    然后按如下方式运行:

    "错误“错误[ERR_MODULE_NOT_FOUND]:找不到从导入的程序包“脚本“ \interactive .MJs“

    您是否从命令行运行此函数、而不是尝试在 VS Code 中进行调试? 如果是、则需要注释掉我之前给出的示例脚本中的第 4 行:

    const ds = scripting.initScripting(); // for VS Code / Theia

    只需在 VS Code 中进行调试即可。 如果从 CLI 运行、则需要将其删除。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    需要更新 run.bat 以支持模式的额外参数。  [/报价]

    我为此提交了一张票。 跟踪链接: https://sir.ext.ti.com/jira/browse/EXT_EP-12857

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您的示例代码用于读取和打印传递到 run.bat 的参数、这非常有用。 我像您一样尝试将参数打印逻辑添加到 interactive .mjs.和 breakpoint.mjs 的前面。

    我现在仍然坚持在我最后一次答复的结尾提到的问题。 无论是从 VSCode 调试器还是 CLI 运行、是否激活线路  

    const DS = scripting.initScripting();
    我收到错误消息:  
    错误[ERR_MODULE_NOT_FOUND]:找不到从导入的软件包“添加“ \interactive .MJs。
    另一个可能是线索的异常:尽管每个修改的示例脚本中的前两个活动源代码行与您的 interactive.Mb 中相同、即
    “脚本编写“导入脚本
    “repl"导“导入*作为 repl
     
    Interactive .MJs 显示在 VSCode 编辑器面板中 、第一行变暗、表示错误、而在编辑器面板显示的 断点.MJs 中、第二行变暗、表示错误。  
    如果从 CLI 运行任一脚本、则上面的错误消息前面有:
    节点:内部/错误:490
    ErrorCaptureStackTrace (err);
    ^μ s
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不知道为什么会出现此错误。 您正在使用 run.bat 调用脚本、对吗? 应该是设置脚本环境的工具。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对延迟深表歉意。 其他任务优先。 是的、我正在运行 TI 脚本批处理文件 run.bat。 我从我为此创建的另一个批处理文件中调用它。 因此、命令行看起来像“CCS20_RunScript.bat interactive .mjs“ 、然后正确解码为“C:\ti\ccs2010\ccs\scripting\run.bat interactive .mjs“。  似乎可能的原因可能是在我的 CCS 版本 20 安装中或在 node.js 安装中未正确配置某些内容。 对于节点资源、我 尝试设置 Windows 路径变量、使 C:\TI\ccs2010\ccs\tools\node 出现在 C:\Program Files\nodejs\和反序之前。 结果是相同的。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    根据您的路径、它看起来像 CCS 20.1.0。 如果可以、我建议您更新 CCS 版本。 20.2.0 是最新版本、而 CCS 20.3.0 应于下月初发布。 遗憾的是、较旧的 CCS 20.x 版本存在各种稳定性问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我 安装了 CCS 版本 20.2.0 并修改了路径变量。 我在尝试运行 interactive .MJs 时仍然得到相同的结果。  

    > C:\TI\ccs20\ccs\scripting\run.bat interactive .mjs
    节点:内部/错误:490
    ErrorCaptureStackTrace (err);
    ^μ s

    错误[ERR_MODULE_NOT_FOUND]:找不到从 C:\_svn\Codebase\branches_CCSv20\NGJ_MC_02_00_DEV_TS2\DSP\SEU\JVScript\interactive .MJs 导入的软件包“堆叠“
    ←[90m 在新节点错误 (node:internal/error:399:5)←[39m
    ←[90m at packageResolve(节点:内部/模块/ESM/解析:889:9)←[39m
    ←[90m at moduleResolve(节点:内部/模块/ESM/解析:938:20)←[39m
    ←[90m at defaultResolve(节点:内部/模块/ESM/解析:1153:11)←[39m
    ←[90m 在 nextResolve(节点:内部/模块/ESM/loader:163:28)←[39m
    ←[90m 在 ESMLoader.Resolve(节点:internal/modules/ESM/loader:838:30 )←[39m
    ←[90m at ESMLoader.getModuleJob(节点:内部/模块/ESM/loader:424:18)←[39m
    ←[90m at ModuleWrap (节点:内部/模块/ESM/MODULE_Job:77:40)←[39m
    ←[90m at link (node:internal/modules/ESM/module_job:76:36)←[39m {
    代码:←[32m'ERR_MODULE_NOT_FOUND'←[39m
    }

    node.js v18.16.0

    我验证了  C:\TI\ccs2020\ccs\tools\node 中安装的是正在访问的 node.exe。  

    > CD C:\TI\ccs20\ccs\tools\node

    C:\ti\ccs2020\ccs\tools\node> node -v
    v18.16.0

    如果我在 C:\Program Files\nodejs 处检查 node.js 的主安装、则会显示:

    C:\Program Files\nodejs> node -v
    v22.15.0

    node.exe 的 TI 版本似乎尚未在 CCS 版本 20.1.0 和 20.2.0 之间更新。  

    您是否知道我的环境中可能还需要更新哪些内容才能成功运行 Interactive .MJ?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我 安装了 CCS 版本 20.2.0 并修改了路径变量。 我在尝试运行 interactive .MJs 时仍然得到相同的结果。  

    > C:\TI\ccs20\ccs\scripting\run.bat interactive .mjs
    节点:内部/错误:490
    ErrorCaptureStackTrace (err);
    ^μ s

    错误[ERR_MODULE_NOT_FOUND]:找不到从 C:\_svn\Codebase\branches_CCSv20\NGJ_MC_02_00_DEV_TS2\DSP\SEU\JVScript\interactive .MJs 导入的软件包“堆叠“
    ←[90m 在新节点错误 (node:internal/error:399:5)←[39m
    ←[90m at packageResolve(节点:内部/模块/ESM/解析:889:9)←[39m
    ←[90m at moduleResolve(节点:内部/模块/ESM/解析:938:20)←[39m
    ←[90m at defaultResolve(节点:内部/模块/ESM/解析:1153:11)←[39m
    ←[90m 在 nextResolve(节点:内部/模块/ESM/loader:163:28)←[39m
    ←[90m 在 ESMLoader.Resolve(节点:internal/modules/ESM/loader:838:30 )←[39m
    ←[90m at ESMLoader.getModuleJob(节点:内部/模块/ESM/loader:424:18)←[39m
    ←[90m at ModuleWrap (节点:内部/模块/ESM/MODULE_Job:77:40)←[39m
    ←[90m at link (node:internal/modules/ESM/module_job:76:36)←[39m {
    代码:←[32m'ERR_MODULE_NOT_FOUND'←[39m
    }

    node.js v18.16.0

    我验证了  C:\TI\ccs2020\ccs\tools\node 中安装的是正在访问的 node.exe。  

    > CD C:\TI\ccs20\ccs\tools\node

    C:\ti\ccs2020\ccs\tools\node> node -v
    v18.16.0

    如果我在 C:\Program Files\nodejs 处检查 node.js 的主安装、则会显示:

    C:\Program Files\nodejs> node -v
    v22.15.0

    node.exe 的 TI 版本似乎尚未在 CCS 版本 20.1.0 和 20.2.0 之间更新。  

    您是否知道我的环境中可能还需要更新哪些内容才能成功运行 Interactive .MJ?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    KI — 我比较你的原始互动。MJs 与我的副本。 我意识到您的源代码行不包含  

    从“脚本编写“导入脚本;
    我从副本中删除了这一行。 现在、从 run.bat 执行时、您的来源和我的都显示:
    C:\ti\ccs2020\ccs\scripting\run.bat interactive .mjs
    交互式脚本会话已启动。
    调试器脚本对象绑定到“ds"。“。
    使用 Ctrl+D 加 RETURN 退出。
    >>文件:/// /JVScript/interactive.mjs:9.
    scriptRepl.context [“DS"]=“= DS;
    ^μ s

    参考错误:未定义 DS
    位于文件:/// /JVScript/interactive.mjs:9:30
    在新的承诺 ( )
    位于文件:/// /JVScript/interactive.mjs:6:7
    在 ModuleJob.run(节点:内部/模块/ESM/MODULE_Job:194:25)

    node.js v18.16.0
    您说过、 仅当从 VSCode 调试器运行时、才需要源代码行“const DS = scripting.initScripting();// for VS Code /Theia “。 所以我已经把它注释掉了。 当我重新启用该命令行以使用命令行时、执行是正常的。
    > C:\TI\ccs20\ccs\scripting\run.bat interactive .mjs
    交互式脚本会话已启动。
    调试器脚本对象绑定到“ds"。“。
    使用 Ctrl+D 加 RETURN 退出。
    >>
    (要退出,请再次按 Ctrl+C 或按 Ctrl+D 或键入.exit)
    >>
    我的应用程序脚本更改后、该脚本也会在没有故障的情况下开始执行。 非常感谢您的帮助和耐心!