我编写了一个打字稿函数来在 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 文件而不捆绑时,为什么托管脚本的包的类型会有任何影响?有一些基本的东西我不明白。
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 模块。