【问题标题】:Nodejs - Cant import module unless use the full pathNodejs - 除非使用完整路径,否则无法导入模块
【发布时间】:2018-04-20 03:58:38
【问题描述】:

这里是 node.js 的新手;

我安装了它并尝试使用 w3 模块(在 Windows 上)。

我已将我的全球回购位置更改为:C:\Users\<user>\.node_modules_global 并使用下面的命令安装了 web3 模块,这在 node_modules_global 文件夹上创建了一个新文件夹;:

npm install ethereum/web3.js --global

当我尝试运行时

Web3 = require('web3')它,我得到一个

Error: Cannot find module 'web3'

但是,如果我使用完整路径:

Web3 = require('C:\\Users\\<user>\\.node_modules_global\\node_modules\\web3')

它有效。 知道什么可能导致这个问题吗? (我已将C:\\Users\\&lt;user&gt;\\.node_modules_global 添加到系统路径)

谢谢

【问题讨论】:

标签: node.js npm web3js web3


【解决方案1】:

你在全局安装它,所以它被保存到你的用户文件夹中,而不是在项目中,并且节点默认配置为查看node_modules

解决此问题的两个选项:

  • (a) 在本地保存包
    • 仅使用npm install ethereum/web3.jsnpm install ethereum/web3.js --save 将其安装到项目中的node_modules 目录。 (您必须先 cd 到您的项目文件夹!)
  • (b) 让 Node 默认在全局文件夹中查找
    • 使用"NODE_PATH": "C:\\Users\\&lt;user&gt;\\.node_modules_global\\node_modules"

如何本地安装,如何全局安装

  • 要在本地安装模块,只需执行npm install my-module,或者如果您还想将其添加到您的 package.json,则执行 npm install my-module --save
  • 要全局安装模块,请使用npm install my-module --global

何时使用本地和全局模块

你应该:

  • 如果您要 require() 模块,请在本地安装它。
  • 如果要在命令行上运行模块,请全局安装它。

来源:https://nodejs.org/en/blog/npm/npm-1-0-global-vs-local-installation/

更改节点路径

您可以将NODE_PATH 环境变量设置为您自己的值,您的应用程序将默认查看那里,而不是项目node_modules 目录。

请看这里:http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders

【讨论】:

  • 有趣 - 如果我知道我会多次使用同一个包,我会尽量避免本地安装。你说的似乎有效,我只是收到一条消息:npm WARN saveError ENOENT: no such file or directory, open 'C:\git\Crypto\samples\eth1\package.json' 我应该担心吗?谢谢
  • 这个警告可以通过创建一个 package.json 来修复,尝试破坏 npm init 它会为你做一个 :) 这只是一个警告,而不是一个错误,所以没什么大不了的. package.json 用于跟踪您的所有依赖项,请参见此处:docs.npmjs.com/files/package.json
猜你喜欢
  • 1970-01-01
  • 2012-09-06
  • 2016-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
  • 2019-10-31
相关资源
最近更新 更多