【发布时间】: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