关于writeFileSync的ENOENT在gulp-asset-manifest上的repl失败

时间:2015-04-24 13:29:27

标签: node.js gulp

我使用this site上的代码为Windows aspnet + angularjs应用编写gulp文件。

我现在只运行样式,当我运行gulp时,我得到:

Error: ENOENT, no such file or directory 'C:\project\build\manifest-debug.json'
at Error (native)
at Object.fs.openSync (fs.js:502:18)
at Object.fs.writeFileSync (fs.js:1103:15)
at writeManifestFile (C:\project\node_modules\gulp-asset-manifest\index.js:30:8)
at resetManifestFile (C:\project\node_modules\gulp-asset-manifest\index.js:51:5)
at module.exports (C:\project\node_modules\gulp-asset-manifest\index.js:76:5)
at getManifest (C:\project\Gulpfile.js:97:12)
at Gulp.<anonymous> (C:\project\Gulpfile.js:126:15)
at module.exports (C:\project\node_modules\gulp\node_modules\orchestrator\lib\runTask.js:34:7)
at Gulp.Orchestrator._runTask (C:\project\node_modules\gulp\node_modules\orchestrator\index.js:273:3)

C:\project\node_modules\gulp-asset-manifest\index.js:30:8我看到了:

fs.writeFileSync(filename, JSON.stringify(data));

所以我在节点的REPL上运行了这个:

fs.writeFileSync('C:\\project\\build\\manifest-debug.json', 'hi');

文件已正确创建。

我尝试使用现有文件再次运行gulp并得到完全相同的错误。

我在index.js第30行之前添加了console.log(filename);,我得到了:

./build/manifest-debug.json

所以我在同一文件夹上运行了fs.writeFileSync('./build/manifest-debug.json', 'hi'); REPL,它也有效。

不确定发生了什么。

我在禁用UAC的情况下运行所有​​内容,并在具有管理员权限的命令提示符下运行。

1 个答案:

答案 0 :(得分:0)

问题是fs.writeFileSync需要存在路径。

在调用gulp-asset-manifest时,./build不存在,因为clean任务删除了整个路径。