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议你节点检查员