【问题标题】:JavaScript Import file by absolute pathJavaScript 通过绝对路径导入文件
【发布时间】:2022-10-24 01:20:38
【问题描述】:

我在依赖项目录中有一个名为 foo 的模块:

import foo from '../dependencies/foo'; // works fine

问题是导入应该在不同的路径上,因为它部署在 AWS 依赖层(不同的路径)中。像这样的东西:

import foo from '/opt/dependencies/foo';

但我收到此错误:

找不到模块“/opt/dependencies/foo”或其对应的类型声明.ts(2307)

我可以使用require(),但它给了我一个警告,告诉我改用import 语句。

const foo = require('/opt/dependencies/foo');

在保留 /opt 路径的同时,我该怎么做才能避免此错误?

【问题讨论】:

    标签: javascript typescript


    【解决方案1】:

    你可以使用 ES6 dynamic import() function,虽然它是异步的。如果您使用的是支持顶级await 的环境,那么您可以简单地执行以下操作:

    const foo = await import('/opt/dependencies/foo.js');
    

    如果您使用的是旧版本的节点,那么您需要将整个程序包装在一个异步函数中。像这样:

    (async () => {
      const foo = await import('/opt/dependencies/foo.js');
    
      /* rest of your program */
    })();
    

    【讨论】:

    • 我在等待导入时遇到同样的错误
    • 仅当 'module' 选项设置为 'es2022'、'esnext'、'system'、'node16' 或 'nodenext' 并且 'target' 选项设置为 ' es2017' 或更高版本.ts(1378)
    • @TiagoSilva 是的。如果您的环境未配置为这些设置,那么您将需要使用我的第二段代码,或者升级:)
    猜你喜欢
    • 1970-01-01
    • 2018-11-08
    • 2022-11-07
    • 2011-09-17
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多