Javascript nodejs从绝对路径运行脚本

Javascript nodejs从绝对路径运行脚本,javascript,node.js,express,Javascript,Node.js,Express,我正在用Express在Node.js中编写一个简单的应用程序。 我的脚本的路径类似于path/to/script/server.js。当我通过node server.js运行脚本时,我就在上面的路径中,一切都运行得很好 当我尝试运行脚本trhough节点路径/to/script/server.js时,会出现以下错误: Error: Failed to lookup view "index.html" in views directory "d:\views" at Function.ap

我正在用
Express
Node.js
中编写一个简单的应用程序。 我的脚本的路径类似于
path/to/script/server.js
。当我通过
node server.js运行脚本时,我就在上面的路径中,一切都运行得很好

当我尝试运行脚本trhough
节点路径/to/script/server.js
时,会出现以下错误:

Error: Failed to lookup view "index.html" in views directory "d:\views"
   at Function.app.render [...]
我的
视图
位于
path/to/script/views


如何解决此问题?

在您的
路径/to/script/server.js中,使用此设置(代替视图路径中已有的设置):


此设置的默认值为
process.cwd()+'/views'
,这并不理想。但是,如上所述设置它将确保
视图
目录相对于
服务器.js
而不是当前工作目录。

路径/to/script/server.js
中使用此设置(代替您可能已经拥有的视图路径):


此设置的默认值为
process.cwd()+'/views'
,这并不理想。但是,如上所述设置它将确保
视图
目录相对于
server.js
而不是当前工作目录。

有两种解决方案,它们都是自以为是的

  • 使用
    cd path/to/script&&node server.js
    。这会将当前文件夹更改为
    path/to/script
    ,然后运行
    server.js
    。因此,
    process.cwd()
    将返回所需的工作文件夹

    优点:如果有其他代码依赖于当前工作文件夹,它也会开始工作

    缺点:它看起来不优雅,而且还会更改提示符的位置,即使您不想这样做。虽然它不是omg黑客,并且经常被使用,尤其是在编写cronjob文件和应用程序启动器时

  • 将代码更改为不依赖当前工作目录。也就是说:
    app.set('views','u dirname+'/views')
    将返回脚本的目录名,而不是从中启动应用程序的目录

    优点:通常被认为是良好的做法,没有副作用

    缺点:您可能需要在多个地方修改代码。然后,您的代码依赖于
    server.js
    的位置来查看
    文件夹


  • 为什么会这样?主要是因为工作目录是一个相当重要的信息,经常被用来或您的利益,而不仅仅是打破东西时,它没有正确设置

    它如何有用的示例:

    想象一下,两个站点的代码相同,但服务内容不同,代码位于
    /path/to/code
    中,数据位于
    /sites/www1
    /sites/ww2
    中,那么神奇的事情就发生了:


    cd/sites/www1&&node/path/to/code
    有两种解决方案,都是自以为是的

  • 使用
    cd path/to/script&&node server.js
    。这会将当前文件夹更改为
    path/to/script
    ,然后运行
    server.js
    。因此,
    process.cwd()
    将返回所需的工作文件夹

    优点:如果有其他代码依赖于当前工作文件夹,它也会开始工作

    缺点:它看起来不优雅,而且还会更改提示符的位置,即使您不想这样做。虽然它不是omg黑客,并且经常被使用,尤其是在编写cronjob文件和应用程序启动器时

  • 将代码更改为不依赖当前工作目录。也就是说:
    app.set('views','u dirname+'/views')
    将返回脚本的目录名,而不是从中启动应用程序的目录

    优点:通常被认为是良好的做法,没有副作用

    缺点:您可能需要在多个地方修改代码。然后,您的代码依赖于
    server.js
    的位置来查看
    文件夹


  • 为什么会这样?主要是因为工作目录是一个相当重要的信息,经常被用来或您的利益,而不仅仅是打破东西时,它没有正确设置

    它如何有用的示例:

    想象一下,两个站点的代码相同,但服务内容不同,代码位于
    /path/to/code
    中,数据位于
    /sites/www1
    /sites/ww2
    中,那么神奇的事情就发生了:


    cd/sites/www1&&node/path/to/code

    如何定义
    server.js
    中视图的路径?如何定义
    server.js
    中视图的路径?我尝试过,但似乎不起作用我尝试过,但似乎不起作用
    app.set('views', __dirname + '/views');