Node.js 运行nodemon时,在依赖项的commonjs下运行时,选择commonjs文件

Node.js 运行nodemon时,在依赖项的commonjs下运行时,选择commonjs文件,node.js,nodemon,Node.js,Nodemon,我正在运行节点14 我在package.json中有一个包 "main": "dist/index.js", "type": "commonjs", 没有浏览器或模块字段 这是一个typescript项目,我编译为.cjs输出 问题是,当我像这样启动nodemon时: nodemon-watch'src/***'-e ts,tsx-exec ts node./src/index.ts 我得到这个错误: 错误

我正在运行节点14

我在package.json中有一个包

  "main": "dist/index.js",
  "type": "commonjs",
没有浏览器或模块字段

这是一个typescript项目,我编译为.cjs输出

问题是,当我像这样启动nodemon时:

nodemon-watch'src/***'-e ts,tsx-exec ts node./src/index.ts 我得到这个错误:

错误[ERR_REQUIRE_ESM]:必须使用导入加载ES模块:/Users/blah/dist/index.js

该模块有模块“main”和“browserfields”,但其类型为“module”

它有index.js和index.cjs文件,但正在选择index.js文件

当我运行编译后的输出时,一切都很好,它是一个.cjs文件


有没有办法让node知道我希望一切都在commonjs下运行。

我认为没有办法让node做你想做的事情。我有一个类似的例子,主项目是commonjs,但其中一个库是esm,或者它使用的库是esm。我不记得具体的细节了,但那是一件非常痛苦的事

基本的解决方法是使用esm导入提供问题的库。一旦你这样做了,你很可能会遇到第二层问题

// example
const esmImport = require('esm')(module)
const {CookieJar, fetch} = esmImport('node-fetch-cookies')
动态导入也为我解决了这个问题

async init() {
        const { CookieJar } = await import('node-fetch-cookies')
        this.cookieJar = new CookieJar()
        this.cookieJar.addCookie(`username=${this._user}`, this._url.toString())
        this.cookieJar.addCookie('hippa=yes', this._url.toString())
    }

我认为没有办法让node做你想做的事。我有一个类似的例子,主项目是commonjs,但其中一个库是esm,或者它使用的库是esm。我不记得具体的细节了,但那是一件非常痛苦的事

基本的解决方法是使用esm导入提供问题的库。一旦你这样做了,你很可能会遇到第二层问题

// example
const esmImport = require('esm')(module)
const {CookieJar, fetch} = esmImport('node-fetch-cookies')
动态导入也为我解决了这个问题

async init() {
        const { CookieJar } = await import('node-fetch-cookies')
        this.cookieJar = new CookieJar()
        this.cookieJar.addCookie(`username=${this._user}`, this._url.toString())
        this.cookieJar.addCookie('hippa=yes', this._url.toString())
    }

我也遇到了同样的问题,我对多值参数使用了单引号,比如“-exec”来解决这个问题

nodemon --watch 'src/**/*' -e ts,tsx --exec 'ts-node ./src/index.ts'

我也遇到了同样的问题,我对多值参数使用了单引号,比如“-exec”来解决这个问题

nodemon --watch 'src/**/*' -e ts,tsx --exec 'ts-node ./src/index.ts'

如果我的答案不适用于你,那么你能证明自己是MVP吗?如果我的答案不适用于你,那么你能证明自己是MVP吗。