NextJS外部包导入错误- '_myorganization_toolkit__WEBPACK_IMPORTED_MODULE_3__.myFunction不是函数'

n1bvdmb6  于 2022-12-23  发布在  Webpack
关注(0)|答案(1)|浏览(166)

我在尝试将webpack构建的Node包导入到我的NextJS项目中时遇到了问题。
在这个场景中,我有两个包my-sitetoolkit,我试图从toolkit包中导入一个函数myFunctionmy-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“转发”到浏览器有关,但我不知道如何解决这个问题,我甚至也不确定这是否是实际发生的事情。
如何解决此问题?

dgtucam1

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(通用模块定义)包。

相关问题