我有 FileA 可以从不同的目录动态导入 FileB 。 动态导入失败,因为FileB导入模块“lodash”。
错误显示
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'lodash'.
文件A.js
// ... My other codes
import("file://D:/plugins/FileB.js");
// ... My other codes
文件B.js
import { now } from "lodash";
console.log(now());
export const Person = {
name: "John Doe"
}
我的问题是如何添加动态导入中需要的依赖(这里是动态导入中添加lodash)?
注:
当您从项目目录外部动态导入
FileB
时,Node.js 不会将项目的 node_modules
文件夹识别为 FileB
的依赖项源。您可以尝试使用以下一些方法让 lodash
可以访问 FileB
:
NODE_PATH
设置
NODE_PATH
环境变量以指向项目的 node_modules
目录。这允许 Node.js 解析此路径中的模块,即使是从项目外部导入文件时也是如此。
对于 Windows,您可以这样设置
NODE_PATH
:
set NODE_PATH=D:\path\to\your\project\node_modules
node FileA.js
对于 macOS/Linux,请使用:
export NODE_PATH=/path/to/your/project/node_modules
node FileA.js
lodash
中动态加载
FileB
修改
FileB
以在需要的函数内动态加载 lodash
:
// FileB.js
const lodash = await import("lodash");
console.log(lodash.now());
export const Person = {
name: "John Doe"
};
此方法允许您将
lodash
指定为 FileA
的 package.json
中的依赖项,并且 FileB
将使用动态导入的 lodash
,而不会因模块解析问题而中断。
FileB
另一种解决方法是将
FileB
复制到项目目录中或使用 lodash
的绝对路径:
// FileB.js
import { now } from "file:///D:/path/to/your/project/node_modules/lodash";
console.log(now());
export const Person = {
name: "John Doe"
};
这样,
lodash
就会从项目的 node_modules
中显式加载。
让我知道这些方法之一是否有帮助,或者您是否有任何特定限制!