将现有的 JS "package" 与 Node.JS 一起使用?

Use existing JS "package" with Node.JS?

我有一些现有的 JS 代码,我将其作为 NPM 包发布。我们称它为 "my-pkg"。我创建了 package.json 并安装了我的新本地包。我的包裹包含这些文件:

我的-pkg.js

function ping() {
    console.log("Hi!");
}

package.json

{
  "name": "my-pkg",
  "version": "1.0.0",
  "description": "My test package.",
  "main": "my-pkg.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Me",
  "license": "ISC"
}

我尝试这样使用我的包:

npm install .\my-pkg
node
> var myPkg = require("my-pkg");
undefined
> myPkg.ping();
TypeError: undefined is not a function

请注意,这是在使用 Node.JS v0.12.2 的提升命令行中的 Windows 8 上。我希望公开现有的 JS 功能,而不是编写全新的 NPM 包。我在这里错过了什么?

所有 Node.js modules 必须通过 module.exports 导出其内容。您的文件中缺少以下内容:

module.exports.ping = ping;

这也有效(exports 最初分配给 module.exports):

exports.ping = ping;