我的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
在部署应用程序时可用。
答案 0 :(得分: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",
如果您记得从最后一个条目中删除逗号,则可以复制并粘贴输出。
答案 1 :(得分:1)
我在为https://github.com/HenrikJoreteg/humanjs-sample-app/
安装npm时遇到了这个错误我在Windows机器上,所以我怀疑这是一个问题,Windows对文件路径中的字符数有奇怪的限制。
我通过将我的基本路径缩短为根目录中的三个字符的文件夹名称(在这种情况下从C:\ projects \ humanjs-sample-app转到C:\ hjs)解决了这个问题。当我重新运行npm安装一切正常。我对这个决议不满意。我不应该担心我的基本路径名太长了。这是人们经常不在Windows机器上进行节点开发的原因之一。
另一种解决方案是在Linux或Mac上开发,如果你还没有。这可能是我的长期战略。
答案 2 :(得分:-1)
当您运行npm install <name-of-package>
时,它会将软件包安装到您的node_modules
文件夹,但不会将其添加为依赖项。要安装软件包并将其另存为package.json
中的依赖项,您必须使用--save
标记,如下所示:
npm install <name-of-package> --save
npm documentation提供了有关可以使用的其他标志的更多信息,例如--save-dev
标志用于保存开发依赖项,--save-optional
标志用于保存可选依赖项package.json
}。