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');