【问题标题】:Imported Node Module - Error: Cannot find module导入的节点模块 - 错误:找不到模块
【发布时间】:2022-01-27 18:51:08
【问题描述】:

我正在尝试修改这个现有的 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)

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

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"
  }

【问题讨论】:

  • 我发现在运行 npm install 命令时不会创建 /lib 文件夹和底层文件。知道为什么这可能不会发生吗?

标签: javascript node.js npm node-modules npm-install


【解决方案1】:

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

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

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

【讨论】:

  • 如果这是您解决问题的方法,请将其标记为已接受的答案以帮助其他人识别它
  • 如果这是您解决问题的方法,请将其标记为已接受的答案以帮助其他人识别它
猜你喜欢
  • 2017-05-19
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
  • 2022-12-15
  • 2019-09-24
  • 2019-11-05
  • 2021-07-03
  • 2019-12-18
相关资源
最近更新 更多