【问题标题】:How to use my own node module如何使用我自己的节点模块
【发布时间】:2017-10-05 22:56:04
【问题描述】:

我创建了一个节点模块,但似乎无法正确使用它。这是我的 index.js 用于所述模块:

const thing = require('./thing.js');
exports.thing = thing;

这里是thing.js:

module.exports = 'foobar';

这是 package.json:

{
  "name": "thing-both",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

这是我想在其他模块中使用的 package.json:

{
  "name": "another-thing",
  "description": "",
  "dependencies": {
    "thing-both": "file:../both"
  },
  "private": true
}

我运行 npm install 并安装模块。当我尝试要求我在 anotherThing 模块中创建的模块时,我收到“找不到模块”错误。这是我的要求声明:

const thing = require('thing-both');

我注意到的一件事是安装的模块没有文件,并且文件夹在我的目录侧边栏中有一个图标(使用 Sublime 3,图标看起来像一个符号链接图标):

这是我正在使用的项目目录:

both
  thing.js
  index.js
  package.json
other
  // stuff

我在这里可能做错了什么?

【问题讨论】:

    标签: node.js npm


    【解决方案1】:

    在你的库模块中使用npm link,然后在你的消费模块中使用npm link MODULE_NAME。您收到此错误是因为您的库模块可能未托管在 npm 注册表中,而 npm install 在该注册表中查找模块。

    这是一种进行快速本地开发的方法,无需在每次进行更改并想在本地测试时将库模块一直提交到 npm 注册表。

    【讨论】:

    • 试一试,但仍然遇到与以前相同的错误。我在我的模块目录both 中运行npm link,然后在我的模块目录other 中运行npm link thing-both。看起来链接设置正确,因为我的终端说是这种情况。也许我实际上并没有正确创建节点模块?
    • @skwny 查看消费者模块的node_modules 文件夹(我认为这是“另一件事”)。库模块是否有目录(或符号链接)(我想你称之为“东西”)?如果有,您需要在您的 JS 中使用 var thingBoth = require("thing-both"); 来要求该库。
    • 是的,就是这样。我在调用模块的 node_modules 文件夹中有一个目录(它似乎有一个符号链接作为图标),并且在我的调用模块中我需要它,尽管它是通过const thingBoth = require('thing-both')。但请注意,当我在调用模块的 node_modules 文件夹中展开目录 thing-both 时,没有显示任何内容,如原始问题所示。
    猜你喜欢
    • 1970-01-01
    • 2019-10-02
    • 2016-09-06
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多