2014-08-29 18 views
6

Tôi đã cố triển khai một số mã sử dụng promise và tôi đã sao chép một số mã nguồn từ Ghost. Nhưng khi tôi chạy nó, tôi đã nhận ra lỗi:Nodejs: đường dẫn phải là một chuỗi

Mã:

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) 
    }); 

Lỗi Output

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' } 

Trả lời

3

Vấn đề của bạn là ở đây:

write = fs.createWriteStream(configFile) 

configFile - là biến chưa được khởi tạo ở đây . Bạn có thể tránh vấn đề tương tự trong tương lai bằng cách sử dụng một số trình gỡ lỗi.

Tôi khuyên bạn nên node-inspector

Các vấn đề liên quan