当前位置: 首页 > 知识库问答 >
问题:

在CommonJS节点应用程序中导入ES6模块?

王嘉木
2023-03-14

长话短说,我试图在CommonJS模块中使用一个只有ES6模块入口点的npm包,即Bids-Validator(GitHub),因为我的整个50多个模块的应用程序都是在CommonJS中构建的。根据节点文档,这样做的标准方法是使用import()函数。我使用以下代码尝试了这种方法:

async function importValidator() {
  const { validate } = await import('bids-validator')
  return validate
}

const validate = importValidator()

但是,这会导致bids-validator包出错,而不一定是上面的导入函数:

error: unhandledRejection: Cannot use import statement outside a module
/*/app/api/node_modules/bids-validator/index.js:2
import validate from './validators'

有没有一种方法可以绕过这个问题,这样我就可以在CommonJS模块中使用这个包了?

共有1个答案

慕志泽
2023-03-14

检查package.json中选择了什么作为选项。确保选择类型:“common.js”而不是“module”

 类似资料:
  • 我使用的是TypeScript(1.6),节点位于--harmony标志下,因此我希望将es6模块语法转换到commonJS。 据我所知,我不能用Typescript1.6来做这件事。如果我将目标设置为es6,将模块设置为commonjs,我会得到一个TypeScript错误- 当目标为“ES6”或更高版本时,无法将模块编译为“commonjs”、“amd”、“system”或“umd”。 为什么

  • 问题内容: 我试图在节点中陷入进口的泥潭,并试图使用此示例中提供的语法: [备忘单链接](https://hackernoon.com/import-export-default-require-commandjs- javascript-nodejs-es6-vs-cheatsheet-different-tutorial-example-5a321738b50f) 我正在浏览支持表,但无法找到

  • 我试图在ASP.NET Core2.2应用程序(Visual Studio 2019)中执行一个Typescript文件到另一个Typescript文件的简单导入。我没有使用任何其他框架,如Angular。我遇到了无法在运行时为模块文件找到正确路径的问题。 我有两个简单的Typescript文件,我已经放在子文件夹“Typescript”中--它们被命名为“mytsmodule.ts”和“anot

  • 我有两个应用程序:同事和服务,每个都有自己的模型 在coworkers models.py中,我可以“从services.models导入服务”。 当我尝试在services models.py中“from coworkers.models import Status”时,会收到以下错误消息: 回溯(最近一次调用):文件“/Users/lucas/Documents/projetos/cwk-ma

  • 问题内容: 我正在尝试使其工作,但似乎无法在SO的任何地方找到解决方案。尝试编译此单文件应用程序时: 使用命令“ tsc app.ts –module’commonjs’”,我得到以下错误(不使用– module标志给我一个额外的错误,告诉我我需要它来编译外部模块): 问题答案: TypeScript需要知道它存在。 为节点安装类型definitinos: 旧答案 遵循这两个步骤 从此处下载文件:

  • 问题内容: 以前我可以做: 但是现在TypeScript(1.5)支持es6模块语法,在ES6模块语法中实现相同功能的正确方法是什么。 问题答案: 正确的方法是继续使用旧的导入语法。新的导入语法仅适用于ES模块,而旧的导入语法仅适用于ES6之前的模块。两者是截然不同的,有意如此。 导入模块’foo’的所有 属性 , 而不导入默认值。 来自功能的设计者: 导出默认声明始终声明一个名为default的