Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在ExtendScript中使用npm包_Node.js_Macos_Npm_Adobe_Extendscript - Fatal编程技术网

Node.js 在ExtendScript中使用npm包

Node.js 在ExtendScript中使用npm包,node.js,macos,npm,adobe,extendscript,Node.js,Macos,Npm,Adobe,Extendscript,更新 我为使InDesign CC 2018/2019 CEP小组充分发挥作用所做的所有工作都在进行中。我能够成功地使npm包在CEP面板的客户端和主机部分以及脚本面板中工作。然而,node和ExtendScript版本非常陈旧。有关更多详细信息,请参阅 原始问题 我在AppleScript中收集了大量脚本,主要用于InDesign CC 2018,我正试图在ExtendScript中重做这些脚本(为了可移植性)。随着最近的预发布,我已经让堆栈开始工作。我可以登录到控制台,并通过InDesig

更新

我为使InDesign CC 2018/2019 CEP小组充分发挥作用所做的所有工作都在进行中。我能够成功地使npm包在CEP面板的客户端和主机部分以及脚本面板中工作。然而,node和ExtendScript版本非常陈旧。有关更多详细信息,请参阅


原始问题

我在AppleScript中收集了大量脚本,主要用于InDesign CC 2018,我正试图在ExtendScript中重做这些脚本(为了可移植性)。随着最近的预发布,我已经让堆栈开始工作。我可以登录到控制台,并通过InDesign使用内置的
$.write()
alert()
显示警报

我想使用的好处是npm包的重型起重,但我无法让他们正确加载。例如,我想加载相当简单的节点记录器(与winston相比),但加载我能找到的所有垫片似乎都不起作用

下面是我的
index.jsx
文件的一个示例

//任何写入只读属性的尝试都会导致运行时错误。
$.strict=true
//在InDesign应用程序中运行此脚本
#目标识别设计
var rootDir=文件($.fileName).path;
//加载ExtendScript monkey修补程序以支持Node.js相关功能
$.evalFile(rootDir+'/vendor/node_modules/extendscript-es6-shim/index.js')//装载良好
$.evalFile(rootDir+'/vendor/node_modules/extendscript.prototype/lib/extendscript.prototype.js')//装载良好
$.evalFile(rootDir+'/vendor/es require/lib/require.js')//装载良好
$.evalFile(rootDir+'/vendor/node_modules/node logger/logger.js')//错误:require不是一个函数
警惕(“如果你在这里,它正在工作!”);
我的
.vscode/launch.json
如下所示

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "extendscript-debug",
            "request": "launch",
            "name": "Project name",
            "program": "${workspaceFolder}/source/index.jsx",
            "targetSpecifier": "indesign-13.064", 
            "engineName": "main",
        }
    ]
}
正如你们所看到的,我有点不知所措,因为node和npm对我来说是新的。ExtendScript似乎不具备拉入节点模块所需的功能。人们似乎走了另一个方向:从节点开始,然后执行ExtendScript

问题

  • 人们是否将npm包的最新版本加载到ExtendScript中?如果是,怎么做
  • 我应该这样做吗?如果没有,那么使用npm模块和ExtendScript来自动化Adobe产品中的内容的最佳方法是什么
  • 环境

    • Mac OSX El Capitan 10.11.6(也在High Sierra上进行了试验,结果相同)
    • Visual Studio代码1.31.1
    • VSCode 0.2.4的ExtendScript调试器插件
    • npm配置列表
      显示
      user-agent=“npm/6.5.0节点/v11.9.0达尔文x64”

    提前感谢你怜悯这个可怜的灵魂。

    ExtendScript是ES3,所以我不确定这些猴子补丁是用哪种魔法来让这个古老的格式像Node一样运行的。在我看来,在你的情况下,这方面的某些东西似乎是失败的。 由于节点是在一种完全不同的javascript中,所以这种方法很可能是不可能的

    您可能有一个单独的节点应用程序,可以与jsx脚本交互。主要是,它可以通过在其上运行jsx脚本来操纵InDesign,这些脚本可能带有参数并向其返回结果

    它有点依赖于能够复制AppleScript的“DoJavaScript”命令,该命令在“告诉adobe应用程序”块中运行,可以使用参数动态执行javascript,并同步返回结果

    我不知道如何确保所有用户在他们的系统上安装了正确的项目-用于运行节点。也许他们都需要做一些安装程序。例如,当编写一个简单的jsx脚本时,您所要做的就是向用户提供脚本,但是对于这个假设的设置,我现在还不清楚

    或者,下一步是CEP扩展,它可以在其中使用节点和浏览器,还可以运行jsx脚本并获得结果等。这方面的主要障碍是使整个项目工作所需的工作量,一开始,它的信息量巨大,可能比创建一个使用jsx例程的简单自定义节点应用程序的开销要大得多


    如果您找到了一种向用户提供易于安装的跨平台节点jsx应用程序的方法,那么在所有内置浏览器UI的flare都无法满足预期用途的情况下,这可能是向用户提供功能强大的脚本应用程序的一种快速方法。例如,如果您希望在Node中执行jsx无法执行的某些应用程序控制,并且能够使用ExtendScript ScriptUI或其他UI方式,那么它会很好地工作。

    感谢您的响应。Soooo,你是说这不容易。:-/您是否碰巧拥有用于使这些潜在解决方案正常工作的工具/repo的链接?Node是ES5或更高版本,并且有事件,而JSX除了不适用于Node的类型之外没有其他事件。但您希望在Node中完成哪些常规JSX无法完成的任务?我希望能够访问JSX中的npm模块。我读得越多,研究得越多,就应该使用Node并与JSX交谈。