代码之家  ›  专栏  ›  技术社区  ›  Diego

Nodejs-除非使用完整路径,否则无法导入模块

  •  1
  • Diego  · 技术社区  · 8 年前

    新加入节点。这里是js。

    我安装了它,并试图使用w3模块(在windows上)。

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

    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\\<user>\\.node_modules_global

    1 回复  |  直到 4 年前
        1
  •  3
  •   Alicia Sykes    8 年前

    您可以全局安装它,因此它会保存到您的用户文件夹中,而不是保存在项目中,并且节点在默认情况下配置为查找 node_modules .

    解决此问题的两个选项:

    • (a) 改为在本地保存包
      • 仅使用 npm install ethereum/web3.js npm install ethereum/web3.js --save 将其安装到 node_模块 项目中的目录。(必须先将cd放入项目文件夹!)
    • (b) 默认情况下,使节点在全局文件夹中显示
      • 使用 "NODE_PATH": "C:\\Users\\<user>\\.node_modules_global\\node_modules"

    如何在本地安装,以及如何在全局安装

    • 要在本地安装模块,只需执行以下操作 npm install my-module ,或者如果您也想将其添加到您的软件包中。json,然后执行 npm install my-module --save
    • 要全局安装模块,请使用 npm install my-module --global

    您应该:

    • 如果需要,请在本地安装模块。
    • 如果要在命令行上运行模块,请全局安装该模块。

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

    更改节点路径

    您可以设置 NODE_PATH 默认情况下,您的应用程序将在那里查看,而不是项目 node_模块 目录

    请参见此处: http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders