Javascript path.join的Node.js参数必须是字符串,但参数是路径

Javascript path.join的Node.js参数必须是字符串,但参数是路径,javascript,node.js,types,sequelize.js,Javascript,Node.js,Types,Sequelize.js,我正在使用Node.js版本v0.10.36中的路径模块。它在Node.js版本v0.10.30中的笔记本电脑上工作。我基本上是通过Sequelize处理的从MySQL数据库获取的函数的返回值传递对象中包含的字符串。如果我将path.join函数切换到常规路径+'/'+文件,它可以正常工作。但是,由于某些原因,path.join会在程序中不断抛出错误。我添加了一些console.log来说明我的观点。错误来自以下几行: console.log( this.recordingRow.get( 'i

我正在使用Node.js版本v0.10.36中的路径模块。它在Node.js版本v0.10.30中的笔记本电脑上工作。我基本上是通过Sequelize处理的从MySQL数据库获取的函数的返回值传递对象中包含的字符串。如果我将path.join函数切换到常规路径+'/'+文件,它可以正常工作。但是,由于某些原因,path.join会在程序中不断抛出错误。我添加了一些console.log来说明我的观点。错误来自以下几行:

console.log( this.recordingRow.get( 'id' ) );
console.log( config.path.audio );
var filepath = path.join( config.path.audio, this.recordingRow.get( 'id' ) );
但结果如下:

241
/home/sonar/sonar/files/audio

Unhandled rejection TypeError: Arguments to path.join must be strings
    at path.js:360:15                                                                                                                                                                                                                        
    at Array.filter (native)                                                                                                                                                                                                                 
    at Object.exports.join (path.js:358:36)                                                                                                                                                                                                  
    at Stream.startSonarData (/home/sonar/sonar/inc/streams/stream.js:148:22)                                                                                                                                                                
    at Object.<anonymous> (/home/sonar/sonar/inc/streams/stream.js:74:8)                                                                                                                                                                     
    at Object.tryCatcher (/home/sonar/sonar/node_modules/sequelize/node_modules/bluebird/js/main/util.js:24:31)                                                                                                                              
    at Promise._settlePromiseFromHandler (/home/sonar/sonar/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:452:31)                                                                                                          
    at Promise._settlePromiseAt (/home/sonar/sonar/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:530:18)                                                                                                                   
    at Promise._settlePromises (/home/sonar/sonar/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:646:14)                                                                                                                    
    at Async._drainQueue (/home/sonar/sonar/node_modules/sequelize/node_modules/bluebird/js/main/async.js:177:16)                                                                                                                            
    at Async._drainQueues (/home/sonar/sonar/node_modules/sequelize/node_modules/bluebird/js/main/async.js:187:10)                                                                                                                           
    at Async.drainQueues (/home/sonar/sonar/node_modules/sequelize/node_modules/bluebird/js/main/async.js:15:14)                                                                                                                             
    at process._tickCallback (node.js:442:13)   

这个错误是很明显的。其中一个参数不是字符串。第一个似乎是一个数字。只需先将其转换为字符串,例如,通过字符串:


正如@Felix所述,第二个参数不是字符串,而是数字。有两种方法可以将数字类型转换为字符串:-

path.join config.path.audio,~~this.recordingRow.get'id'; path.join config.path.audio,Stringthis.recordingRow.get'id';
这个错误是很明显的。其中一个参数不是字符串。第一个似乎是一个数字。好的,我会的。你能在JavaScript中键入字符串吗?这可能吗?仅仅是concat+?
path.join(a, String(b));