【问题标题】:difference beetwen path.join(__dirname , 'views') and path.join(__dirname + 'views') in node.jsnode.js 中 path.join(__dirname , 'views') 和 path.join(__dirname + 'views') 之间的区别
【发布时间】:2018-04-28 11:55:37
【问题描述】:

我又被 node.js 卡住了。

我在我的代码中尝试第一个 path.join setup view engine 它不起作用,索引不会显示,然后我更改为 path.join(__dirname , 'views'); 并且它运行良好,索引显示,我不知道如何

有人可以解释这是如何工作的吗?

path.join(__dirname + 'views');

path.join(__dirname, 'views');

这是我的脚本

app.set('views', path.join(__dirname, 'views')); //its work
app.set('views', path.join(__dirname + 'views')); // if i change like this, its not work

【问题讨论】:

    标签: javascript node.js join path


    【解决方案1】:

    path.join 通过将参数与“/”连接起来,从参数构造一个路径。 所以path.join(__dirname, 'views') 的结果是 /path_to_dir/views

    另一方面,(__dirname + 'views') 只有一个参数(__dirname+views)。这意味着没有其他参数可以加入第一个参数,因此您最终会得到“/path_to_dirviews”(不加入“/”)

    【讨论】:

    • 谢谢先生,很好的解释
    【解决方案2】:

    默认函数使用逗号作为分隔符,而不是加号,这就是它使用逗号而不是加号的原因。

    请参阅 node.js 中 path.join() 的文档

    【讨论】:

      【解决方案3】:

      来自官方文档: https://nodejs.org/api/path.html#path_path_join_paths

      你加入的路径必须用分隔符分隔;

      此外,如果所有路径都不是字符串,则会抛出错误。

      所以,我认为添加 + 会使路径变得疯狂,因为它找不到分隔符,而且它发现你提到的路径并不都是字符串。

      希望这会有所帮助。

      【讨论】:

        【解决方案4】:

        要知道这个功能的区别,你有official node.JS documentation

        第一个使用Javascript连接的方法与使用方法参数的结果不同:

        使用标准javascript:

        let folder = '/folder';
        let subFolder = 'sub';
        
        path.join(folder + sub ) // result : /foldersub
        

        但是,正确使用此方法的参数,路径是不同的:此方法格式化所有参数以使用 /

        创建标准零件
        let folder = '/folder';
        let subFolder = 'sub';
        
        path.join(folder, sub) // result : /folder/sub
        

        别忘了你可以使用console.log(path) 在 Javascript 中进行调试...使用它的链接here

        【讨论】:

          【解决方案5】:

          path.join 是一个函数。使用 + 运算符意味着您只发送一个参数,它是 __dirname 和 'views' 的串联。 该函数应返回从传递的参数构造的路径。在你的情况下只有一个,所以它不是一个有效的路径。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-12-30
            • 2016-08-22
            • 2017-02-10
            • 1970-01-01
            相关资源
            最近更新 更多