在nodejs v8.11.3版本下,导入class报错

在nodejs v8.11.3版本下
创建了test01.js如图所示使用export导出
创建test02.js使用require导入test01执行报错,如何解决,前提条件必须在v8.11.3版本下,不能升级,必须使用class不用function

img

img

img

用module.exports导出

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7633138
  • 除此之外, 这篇博客: Nodejs模块加载研究中的 4.2. require 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    只用来加载 CommonJS 模块

  • 以下回答来自chatgpt:

    首先,我们需要了解导入和导出模块的相关知识。

    在Node.js中,我们使用require关键字来导入模块,使用module.exports关键字来导出模块。

    对于导出一个class,我们可以使用以下方式:

    // test01.js
    class MyClass {
      // class的内容
    }
    
    module.exports = MyClass;
    

    要在另一个文件中导入并使用这个class,我们可以使用以下方式:

    // test02.js
    const MyClass = require('./test01.js');
    
    const myInstance = new MyClass();
    

    然而,在Node.js v8.11.3版本中,class语法还没有完全支持。

    为了解决这个问题,我们可以使用Babel来转译我们的代码。

    首先,在项目中安装Babel的相关依赖:

    npm install --save-dev @babel/cli @babel/core @babel/preset-env
    npm install --save @babel/polyfill
    

    然后,在项目根目录下创建一个.babelrc文件,并将以下代码添加到文件中:

    {
      "presets": ["@babel/preset-env"]
    }
    

    接下来,在test01.js中使用class语法来定义和导出你的class。

    最后,在命令行中执行以下命令来使用Babel转译你的代码:

    npx babel test01.js --out-file test01-transpiled.js
    

    以上命令将会把转译后的代码保存到一个test01-transpiled.js文件中。

    现在,在test02.js中导入和使用你的class时,可以使用以下代码:

    const MyClass = require('./test01-transpiled.js');
    
    const myInstance = new MyClass();
    

    这样,你就可以在Node.js v8.11.3版本下使用class语法导入和使用你的模块了。

    请注意,在使用Babel转译代码之前,确保你已经在项目的根目录下正确执行了以上步骤,并且安装了相关的依赖。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^