以 cmd 身份运行软链接节点脚本。 找不到已安装的模块

Running soft linked node script as cmd. can't find installed modules

提问人:Rehamjf 提问时间:11/13/2023 最后编辑:Rehamjf 更新时间:11/14/2023 访问量:34

问:

我有一个在同一个项目文件夹中完美运行的节点脚本,比如说使用puppeteer库的start.js,它运行完美,如下所示: 节点启动 .js

我正在尝试做的是链接此命令以在服务器内的任何位置使用它

chmod +x /var/www/wc-service/spa/start.js && ln -s /var/www/wc-service/spa/bin/start.js /usr/bin/mycommand

但是从bash运行新命令时,我收到了此错误 错误:无法从 node_modules/puppeteer-core/lib/cjs/puppeteer/node/BrowserFetcher.js:36:20) 中找到模块“fs/promises”

笔记

节点:v21.1.0 Debian GNU/Linux 11 npm 版本:10.2.3

节点已更新,默认情况下
具有“fs/promises”,任何将不胜感激,谢谢

节点 .js Linux Bash

评论

0赞 leitning 11/14/2023
您正在对其进行修改以在链接之前可执行,如何在没有链接的情况下运行它?通过调用 ?里面有shebang吗?node start.jsstart.js
0赞 Rehamjf 11/14/2023
@leitning 是的,通过调用节点 start.js是的,start 中有一个 shebang (#!/usr/bin/node .js

答:

0赞 leitning 11/14/2023 #1

鉴于您运行的是 v21.x,我假设您编译并安装了自己的节点。 是一个相对较新的添加,如果您内置到路径中(我认为这是默认的),它将解释您的所有症状。require('fs/promises')node/usr/local

运行将使用 at 的可执行文件,并且很好,因为它在版本 21.x 上;而添加 shebang 会失败,因为它位于不支持调用的 Debian 存储库的旧版本上。node start.js/usr/local/bin/node/usr/bin/noderequire('fs/promises')

您可以通过在终端中运行来验证这一点,以检查您正在运行的可执行文件所在的位置。which nodenode start.js

另外,符号链接没有理由导致失败,我想你只要尝试运行就会得到同样的结果。./start.js