首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何调试两次导入库的nodejs应用程序?

如何调试两次导入库的nodejs应用程序?
EN

Stack Overflow用户
提问于 2022-05-05 18:21:28
回答 1查看 109关注 0票数 1

我使用的是一个名为yjs的库,它只需要导入一次,跨越所有依赖项。当前,当我运行我的应用程序时,我从yjs收到以下警告消息

代码语言:javascript
复制
Yjs was already imported. Importing different versions of Yjs often leads to issues.

我怎样才能看到导入这个库的是什么,以及双导入可能来自哪里?

当我运行pnpm why yjs时,它告诉我一些信息:

代码语言:javascript
复制
$ pnpm why yjs
Legend: production dependency, optional only, dev only

relm-server@1.0.0 /home/duane/Relm/relm/server

dependencies:
y-websocket 1.3.18-canadaduane
├─┬ y-leveldb 0.1.1
│ └── yjs 13.5.27 peer
└── yjs 13.5.27 peer
yjs 13.5.27

但它并没有向我展示一些我知道的地方也是进口的yjs。例如,该项目有几个pnpm工作区,其他使用yjs的工作区是该工作区的依赖项--但在pnpm why报告中看不到它们。

有没有办法在应用程序运行时“打印”导入语句的日志,并显示哪些js文件正在导入哪些包/文件?

EN

回答 1

Stack Overflow用户

发布于 2022-05-05 20:26:12

在nodejs 18 (我认为是nodejs 16)中,如果在命令行上设置了导入加载程序挂钩机制,就可以使用该机制(注意:“任何旧包”都不能使用该机制,因为这将是一个安全问题):

在项目根目录中创建一个名为node):的文件(无论您通常在何处运行node):)。

代码语言:javascript
复制
export const load = async (url, context, defaultLoad) => {
    console.log('import: ' + url);
    return await defaultLoad(url, context);
};

  1. 使用节点的--loader命令行参数来使用es-import-trace.js文件:

运行节点应用程序。

代码语言:javascript
复制
node --loader ./es-import-trace.js dist/server.js

  1. 您将得到如下输出,允许您查看每个导入:

代码语言:javascript
复制
import: file:///home/duane/Relm/relm/server/dist/server.js
import: node:fs
import: file:///home/duane/Relm/relm/server/dist/config.js
import: file:///home/duane/Relm/relm/server/dist/server_ws.js
import: file:///home/duane/Relm/relm/server/dist/db/db.js
... etc. ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72131962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档