我在尝试将webpack构建的Node包导入到我的NextJS项目中时遇到了问题。
在这个场景中,我有两个包my-site
和toolkit
,我试图从toolkit
包中导入一个函数myFunction
到my-site
包中。
在我的my-site
包的一个文件中,我有以下代码:
import { myFunction} from "@myorganization/toolkit";
myFunction();
在浏览器中访问我的下一个站点的相关页面时,我收到此错误:
TypeError: _myorganization_toolkit__WEBPACK_IMPORTED_MODULE_3__.myFunction is not a function
我在toolkit
包中的webpack配置如下所示:
import path from "path";
const config = {
mode: "development",
entry: "./ts/main.ts",
devtool: "source-map",
experiments: {
outputModule: true,
},
output: {
path: path.resolve("./js"),
filename: "main.js",
globalObject: "this",
library: {
type: "module",
}
},
module: {
rules: [
{
test: /\.ts(x)?$/,
loader: "ts-loader",
exclude: /node_modules/,
},
]
},
resolve: {
extensions: [
".tsx",
".ts",
".js",
],
},
};
export default config;
奇怪的是,如果我将myFunction
的值记录到控制台:
import { myFunction} from "@myorganization/toolkit";
console.log("myFunction: ", myFunction);
myFunction();
Next服务器的stdout正确地报告它是一个函数,但是浏览器控制台将它报告为undefined
。
这让我相信这个问题与NextJS没有将代码从toolkit
“转发”到浏览器有关,但我不知道如何解决这个问题,我甚至也不确定这是否是实际发生的事情。
如何解决此问题?
1条答案
按热度按时间dgtucam11#
当您尝试从@myorganization/toolkit包导入和使用myFunction函数时,有几个潜在的问题可能会导致您看到的错误。以下是您可以尝试解决该问题的一些方法:
请确保@myorganization/toolkit包已正确安装在my-site项目中,并且已在package.json文件中作为依赖项列出。您可以通过在项目的根目录中运行npm list或yarn list来检查这一点。请检查import语句中的文件路径,以确保其正确,并且包含myFunction函数的文件位于指定的路径。您还可以尝试使用文件的绝对路径,而不是相对函数。请验证是否已从@myorganization/toolkit包中正确导出myFunction函数。确保未将其标记为private,或者未在export语句中错误命名该函数。确保在代码中正确调用了myFunction函数。请确保您正在向函数传递任何必需的参数,并且您没有尝试在未定义或空的对象上调用它。请确保@myorganization/toolkit包与您在my-site项目中使用的Node.js版本兼容。您可以查看包的文档或包。如果@myorganization/toolkit包是使用webpack构建的,请确保webpack配置已正确设置为输出可在各种环境(包括Web浏览器和Node.js应用程序)中使用的UMD(通用模块定义)包。