Imported Node Module - Error: Cannot find module

Imported Node Module - Error: Cannot find module

我正在尝试修改这个现有的 npm 包,但没有成功。我已经浪费了几个小时进行故障排除,希望得到一些指导。

https://www.npmjs.com/package/dxf

我已经将软件包分叉到我的 Github 帐户中。然后我使用 npm 在本地安装模块(W10 运行 最新的 LTS 节点)。

npm i https://github.com/mgbolts/dxf

它安装没有错误,但是当我在我的应用程序中需要它时,我得到这个错误:

Error: Cannot find module 'S:\mgbolts\coding\Udemy\Nodejs\projects\plasma\node_modules\dxf\lib\index.js'. 

Please verify that the package.json has a valid "main" entry

查看dxf模块文件夹,没有lib子目录,index.js文件位于src子目录。我修改了 dxf 包文件夹中的 package.json 文件以反映这一点。编辑后,我现在收到此错误:

S:\mgbolts\coding\Udemy\Nodejs\projects\plasma\node_modules\dxf\src\index.js:1
import config from './config'

SyntaxError: Cannot use import statement outside a module
    at Object.compileFunction (node:vm:352:18)
    at wrapSafe (node:internal/modules/cjs/loader:1031:15)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (S:\mgbolts\coding\Udemy\Nodejs\projects\plasma\src\index.js:2:13)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)

然后我尝试添加一个新条目 ("type": "module") 到模块文件夹中的 package.json 文件。之后我得到这个错误:

S:\mgbolts\coding\Udemy\Nodejs\projects\plasma\src\index.js:2
const dxf = require('dxf')
            ^
Error [ERR_REQUIRE_ESM]: require() of ES Module S:\mgbolts\coding\Udemy\Nodejs\projects\plasma\node_modules\dxf\src\index.js from S:\mgbolts\coding\Udemy\Nodejs\projects\plasma\src\index.js not supported.

我的代码解决这个问题非常简单,只是一个简单的 const dxf = require('dxf').

这里是 package.json 文件的摘录以及上面提到的两个编辑:

  "name": "dxf",
  "version": "4.6.1",
  "description": "DXF parser for node/browser",
  "main": "src/index.js",
  "type": "module",
  "bin": {
    "dxf-to-svg": "src/cli.js"
  }

问题已解决。我没有意识到从 github 安装时需要编译软件包。从 NPM 注册表安装时不需要。

模块的 package.json 文件有一个 运行 编译过程脚本的脚本。
npm 运行 仅预发布

花了一些时间来安装依赖项(browserify、babel、rimraf),但它已编译并且现在可以工作了...