[英]Node.js Arguments to path.join must be strings but arguments are a path
我在Node.js v0.10.36版中使用路徑模塊。 它可以在Node.js v0.10.30版的筆記本電腦上使用。 我基本上是在傳遞包含在對象中的字符串,該字符串包含從Sequelize處理的函數(從MySQL數據庫獲取)的返回值之一。 如果我將path.join函數切換為常規path +'/'++文件,則可以正常工作。 但是,由於某種原因,path.join會在程序中不斷拋出錯誤。 我添加了一些console.logs來說明我的觀點。 錯誤來自以下幾行:
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)
好吧,錯誤非常明顯。 參數之一不是字符串。 第一個似乎是一個數字。 只需先將其轉換為字符串即可,例如通過String
:
path.join(a, String(b));
如@Felix所述,您的第二個參數不是字符串,而是數字。 有兩種方法將數字類型轉換為字符串:-
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.