7

我的package.json样子是这样的(名称/描述/等。省略)。

{
    "dependencies": {
        "express": "3.3.4",
        "jade": "0.34.x",
        "mongoose": "3.6.x"
    },
    "devDependencies": {
        "vows": "0.7.x"
    }
}

express在存储库上使用并运行了自动生成的node app.js. 这行得通,但是当我使用时curl http://localhost:port出现错误“找不到模块字符解析器”。我跑了npm install character-parser,然后我得到“找不到模块变压器”。这种情况又发生了几次,但在我安装了所有这些之后,应用程序开始工作。

我认为这npm install应该以递归方式安装依赖项。这也让我担心,因为我显然希望在package.json部署应用程序时可以使用。

4

3 回答 3

2

这是一个简单的脚本来收集 ./node_modules 中的依赖项:

var fs = require("fs");

function main() {
  fs.readdir("./node_modules", function (err, dirs) {
    if (err) {
      console.log(err);
      return;
    }
    dirs.forEach(function(dir){
      if (dir.indexOf(".") !== 0) {
        var packageJsonFile = "./node_modules/" + dir + "/package.json";
        if (fs.existsSync(packageJsonFile)) {
          fs.readFile(packageJsonFile, function (err, data) {
            if (err) {
              console.log(err);
            }
            else {
              var json = JSON.parse(data);
              console.log('"'+json.name+'": "' + json.version + '",');
            }
          });
        }
      }
    });

  });
}

对于我正在处理的一个项目,输出如下所示:

"progress": "0.1.0",
"request": "2.11.4",

如果您记得从最后一个条目中删除逗号,则可以复制并粘贴输出。

于 2015-01-25T14:38:42.840 回答
1

我在为https://github.com/HenrikJoreteg/humanjs-sample-app/安装 npm 时遇到了这个确切的错误

我在一台 Windows 机器上,所以我怀疑这是 Windows 对文件路径中字符数的奇怪限制的问题。

我通过将基本路径缩短为根目录中的三个字符文件夹名称来解决此问题(在本例中,从 C:\projects\humanjs-sample-app 到 C:\hjs)。当我重新运行 npm install 时,一切正常。我对这个决议不满意。我不必担心我的基本路径名太长。这也是人们经常不在 Windows 机器上进行节点开发的原因之一。

另一种解决方案是在 Linux 或 Mac 上开发,如果您还没有的话。这可能是我的长期战略。

于 2015-07-17T07:40:26.857 回答
-1

当您运行时npm install <name-of-package>,它会将包安装到您的node_modules文件夹中,但不会将其添加为依赖项。为了安装包并将其保存为您的依赖项package.json,您必须--save像这样使用标志:

npm install <name-of-package> --save

npm 文档提供了有关可以使用的其他标志的更多信息,例如用于--save-dev保存开发依赖项的--save-optional标志和用于将可选依赖项保存到您的package.json.

于 2014-01-18T22:44:28.190 回答