我使用的是一个名为yjs的库,它只需要导入一次,跨越所有依赖项。当前,当我运行我的应用程序时,我从yjs收到以下警告消息
Yjs was already imported. Importing different versions of Yjs often leads to issues.我怎样才能看到导入这个库的是什么,以及双导入可能来自哪里?
当我运行pnpm why yjs时,它告诉我一些信息:
$ 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文件正在导入哪些包/文件?
发布于 2022-05-05 20:26:12
在nodejs 18 (我认为是nodejs 16)中,如果在命令行上设置了导入加载程序挂钩机制,就可以使用该机制(注意:“任何旧包”都不能使用该机制,因为这将是一个安全问题):
在项目根目录中创建一个名为node):的文件(无论您通常在何处运行node):)。
export const load = async (url, context, defaultLoad) => {
console.log('import: ' + url);
return await defaultLoad(url, context);
};--loader命令行参数来使用es-import-trace.js文件:运行节点应用程序。
node --loader ./es-import-trace.js dist/server.jsimport: 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. ...https://stackoverflow.com/questions/72131962
复制相似问题