过去一天我一直在玩节点而且我遇到了一个问题,我非常感谢你的帮助。
我创建了一个新项目并尝试使用我使用npm安装的模块,该模块按预期存在于node_modules目录中,并且命令运行时没有错误但是节点无法找到它并抛出错误(我试过了)多个包具有相同的结果)。下面解释了我的所作所为:
我使用npm init
创建了一个新项目,并完成了引导package.json
创建。然后我创建了一个包含这行代码的javascript文件。
const k = require('korbit-node');
并使用npm install korbit-node
安装模块然后尝试使用node index.js
(我称之为js文件)在本地运行它并且出现此错误。
$ node index.js
module.js:472
throw err;
^
Error: Cannot find module 'korbit-node'
at Function.Module._resolveFilename (module.js:470:15)
at Function.Module._load (module.js:418:25)
at Module.require (module.js:498:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/Users/gabe/Desktop/js_sandbox/index.js:1:73)
at Module._compile (module.js:571:32)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
对我而言,这似乎是一个相当直接的错误消息,告诉我该软件包尚未安装。但是我的项目结构如下所示:
├── index.js
├── node_modules
│ ├── debug
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── Makefile
│ │ ├── README.md
│ │ ├── component.json
│ │ ├── karma.conf.js
│ │ ├── node.js
│ │ ├── package.json
│ │ └── src
│ │ ├── browser.js
│ │ ├── debug.js
│ │ ├── index.js
│ │ └── node.js
│ ├── iconv-lite
│ │ ├── Changelog.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── encodings
│ │ │ ├── dbcs-codec.js
│ │ │ ├── dbcs-data.js
│ │ │ ├── index.js
│ │ │ ├── internal.js
│ │ │ ├── sbcs-codec.js
│ │ │ ├── sbcs-data-generated.js
│ │ │ ├── sbcs-data.js
│ │ │ ├── tables
│ │ │ │ ├── big5-added.json
│ │ │ │ ├── cp936.json
│ │ │ │ ├── cp949.json
│ │ │ │ ├── cp950.json
│ │ │ │ ├── eucjp.json
│ │ │ │ ├── gb18030-ranges.json
│ │ │ │ ├── gbk-added.json
│ │ │ │ └── shiftjis.json
│ │ │ ├── utf16.js
│ │ │ └── utf7.js
│ │ ├── lib
│ │ │ ├── bom-handling.js
│ │ │ ├── extend-node.js
│ │ │ ├── index.d.ts
│ │ │ ├── index.js
│ │ │ └── streams.js
│ │ └── package.json
│ ├── korbit-node
│ │ ├── README.md
│ │ ├── korbit.js
│ │ └── package.json
│ ├── lodash
│ │ ├── README.md
│ │ ├── dist
│ │ │ ├── lodash.compat.js
│ │ │ ├── lodash.compat.min.js
│ │ │ ├── lodash.js
│ │ │ ├── lodash.legacy.js
│ │ │ ├── lodash.legacy.min.js
│ │ │ ├── lodash.min.js
│ │ │ ├── lodash.mobile.js
│ │ │ ├── lodash.mobile.min.js
│ │ │ ├── lodash.underscore.js
│ │ │ └── lodash.underscore.min.js
│ │ ├── lodash.js
│ │ └── package.json
│ ├── ms
│ │ ├── index.js
│ │ ├── license.md
│ │ ├── package.json
│ │ └── readme.md
│ └── needle
│ ├── README.md
│ ├── bin
│ │ └── needle
│ ├── examples
│ │ ├── deflated-stream.js
│ │ ├── digest-auth.js
│ │ ├── download-to-file.js
│ │ ├── multipart-stream.js
│ │ ├── parsed-stream.js
│ │ ├── parsed-stream2.js
│ │ ├── stream-events.js
│ │ ├── stream-to-file.js
│ │ └── upload-image.js
│ ├── lib
│ │ ├── auth.js
│ │ ├── cookies.js
│ │ ├── decoder.js
│ │ ├── multipart.js
│ │ ├── needle.js
│ │ ├── parsers.js
│ │ └── querystring.js
│ ├── package.json
│ └── test
│ ├── basic_auth_spec.js
│ ├── compression_spec.js
│ ├── cookies_spec.js
│ ├── decoder_spec.js
│ ├── errors_spec.js
│ ├── helpers.js
│ ├── keys
│ │ ├── ssl.cert
│ │ └── ssl.key
│ ├── parsing_spec.js
│ ├── proxy_spec.js
│ ├── querystring_spec.js
│ ├── redirect_spec.js
│ ├── stream_spec.js
│ ├── url_spec.js
│ └── utils
│ ├── formidable.js
│ ├── proxy.js
│ └── test.js
└── package.json
我可以清楚地看到node_modules文件中的模块,所以我不确定为什么它没有被找到。
我已经看到了这些问题Node.js NODE_PATH environment variable
关于确保NODE_PATH
设置正确,但我发现即使我明确指出文件的路径后它仍然无效。我当然也发现了有关未安装软件包的问题,但在这种情况下并非如此。
有人可以告诉我为什么节点找不到这个或者指向一些有关此问题的资源/节点如何处理包?我确定这是一个简单的问题,但我在网上/文档中找到的所有内容到目前为止都没有用。
答案 0 :(得分:1)
我曾经遇到过这个问题。我错误地将项目文件夹命名为与我尝试安装和要求的节点模块完全相同。
您的package.json文件是否在名为korbit-node
的文件夹中?
答案 1 :(得分:0)
模块的主文件必须是index.js。 (node_modules / korbit节点/ index.js)。这里不存在。
将node_modules/korbit-node/korbit-node.js
替换为node_modules/korbit-node/index.js