我写道:
path = 'public/MIN-1234';
path = path.split('/');
return path.join( process.cwd(), ...path);
我希望:
c:\CODE\public/MIN-1234
但得到了:
`publicC:\CODEMIN-1234`
什么??
答案 0 :(得分:1)
您的问题下的评论为您做错的事情提供了一些有价值的指导。具体来说,您似乎认为您正在使用节点path.join
(其中path
是节点模块而path.join
是有效的模块方法),而实际上您已覆盖path
使用您的路径添加字符串,然后将字符串转换为一个数组,误导性地,它还具有完全不同功能的join
方法。
但是,您尝试使用ECMAScript 2015(有时缩写为ES6但从未使用过EC6)以及使用节点path.join
方法的其他扩展语法似乎还存在进一步的问题。
如果您之前有正当理由将路径添加分割为其分隔符,则可以使用ES6 rest spread将这些元素添加到路径中:
function something() {
const path = require('path');
const myPathAddition = 'public/MIN-1234';
const myPathAdditionElmts = myPathAddition.split('/'); // if you really need to do this anyway
return path.join(process.cwd(), ...myPathAdditionElmts);
}
但是,如果您没有其他理由来拆分路径添加,那么请不要将其拆分,只是为了立即重新加入path.join
调用中的结果段。相反,您可以加入“un-split”原始字符串,而无需使用扩展语法:
function something() {
const path = require('path');
const myPathAddition = 'public/MIN-1234'; // don't bother splitting this
return path.join(process.cwd(), myPathAddition); // just join it as is
}
注意:此解决方案在我的Mac终端中正常运行。如果您在Windows机器上执行此操作并且确实需要在您的问题中建议的路径段中使用反斜杠和正斜杠,那么您可能需要或需要进行比我显示的更多解析确保有效/一致/清晰的路径语法。但是,我已经证明了使用path.join
扩展语法的需要或缺乏的一般概念仍然有效。