代码之家  ›  专栏  ›  技术社区  ›  stuart

未在ES模块范围中定义AWS CDK编译的javascript代码给定-_dirname

  •  0
  • stuart  · 技术社区  · 2 年前

    CDK从我的Typescript代码中生成一个JS文件。当我试图通过SAM本地调用测试编译的JS代码时,我得到了错误:

    __dirname is not defined in ES module scope"
    "stack":["ReferenceError: __dirname is not defined in ES module scope","    at node_modules/aws-cdk-lib/core/lib/custom-resource-provider/custom-resource-provider.js
    

    其他生成的函数正在工作,并且 __dirname 在我正在开发的函数中未调用。

    1 回复  |  直到 2 年前
        1
  •  0
  •   lxg    2 年前

    这并非针对AWS CDK;这是Node中ESM模块的常见问题。

    你能做些什么来获得 __dirname 魔术常数,您可以执行以下操作:

    import { fileURLToPath, pathToFileURL } from 'url'
    const __dirname = dirname(fileURLToPath(import.meta.url))