Nodejs:path必须是一个string

我试图实现一些使用promise代码,并从Ghost复制了一些源代码。 但是当我跑了它,我得到一个错误:

代码:

 var Promise = require('bluebird') var fs = require('fs') var path = require('path') var configPath = path.join(__dirname, '/config-example.js') var configFile function writeConfigFile(){ return new Promise(function(resolve,reject){ var read, write, error; console.log('path->', configPath) read = fs.createReadStream(configPath); read.on('error', function(err){ console.log('Error->', err); reject(err) }) write = fs.createWriteStream(configFile) write.on('error', function(err){ console.log('Error->',err) reject(err) }) write.on('finish', resolve) read.pipe(write) }); } var p = writeConfigFile(); p.then(function(data){ console.log(data) },function(data){ console.log('data->',data) }); 

错误输出

 path-> /mnt/share/Learn/config-example.js data-> [TypeError: path must be a string] Error-> { [Error: ENOENT, open '/mnt/share/Learn/config-example.js'] errno: 34, code: 'ENOENT', path: '/mnt/share/Learn/config-example.js' } 

你的问题在这里:

 write = fs.createWriteStream(configFile) 

configFile – 在这里是未初始化的variables。 将来可以通过使用一些debugging器来避免同样的问题。

我build议你节点检查员