Node 和 esm - "type":"module" 破坏了我的脚本

问题描述 投票:0回答:1

我编写了一个打字稿函数来在 postgres 中插入一些行,并且我用 tsx 和一个包脚本开始它,如下......

"install": "env-cmd tsx installation.ts"
。该脚本位于带有 vite 的 React 前端项目中,但我希望这个脚本可以执行后端操作。如果我从 package.json 中删除“type”:“module”,我的安装脚本就可以正常工作。如果存在“type”:“module”,我得到...

SyntaxError: The requested module 'pg' does not provide an export named 'Pool'
    at ModuleJob._instantiate (node:internal/modules/esm/module_job:124:21)
    at async ModuleJob.run (node:internal/modules/esm/module_job:190:5)

pg 是一个 esm 模块,它绝对导出“Pool”。这是 pg 中 index.d.ts 的导出...

/**
 * {@link https://node-postgres.com/api/pool}
 */
export class Pool extends events.EventEmitter {

发生什么事了? Tsx 表示这会起作用。当我只是运行 .ts 文件而不捆绑时,为什么托管脚本的包的类型会有任何影响?有一些基本的东西我不明白。

node.js es6-modules
1个回答
0
投票

pg 软件包不是 ESM 模块。

您提到的片段:

/**
 * {@link https://node-postgres.com/api/pool}
 */
export class Pool extends events.EventEmitter {
    /**

来自 @types/pg,将用作类型定义的帮助程序,但不用于模块解析和导入。

导入 pd 时使用该文件 - https://www.npmjs.com/package/pg?activeTab=code 它是一个 commonJS 模块。

© www.soinside.com 2019 - 2024. All rights reserved.