在 nodeJS 中我写:
path = 'public/MIN-1234';
path = path.split('/');
return path.join( process.cwd(), ...path);
我希望:
c:\CODE\public/MIN-1234
但是得到了:
`publicC:\CODEMIN-1234`
什么??
最佳答案
您问题下的评论为您做错的事情提供了一些有值(value)的指导。具体来说,您似乎认为您正在使用 Node 的 path.join
(其中 path
是 Node 模块,path.join
是有效的模块方法)而实际上您已经覆盖了 path
使用您的路径添加字符串,然后将该字符串转换为一个数组,该数组误导性地也有一个 join
具有完全不同功能的方法。
但是,您尝试使用 ECMAScript 2015(有时缩写为 ES6 但从不缩写为 EC6)休息传播语法与 Node 的 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
中的结果段而拆分它。称呼。相反,您可以只连接“未拆分”的原始字符串,而无需使用扩展语法:
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
的扩展语法的一般概念。仍然有效。
关于javascript - 使用 ...rest ES6 以奇怪的顺序放置参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43181855/