如何设置服务器启动js文件的搜索路径

Node.js - how to set search path for server start js file.

本文关键字:文件 js 搜索 路径 启动 服务器 何设置 设置      更新时间:2023-09-26

这是在我的app.js

app.set('views', path.join(__dirname, 'public'));  /I know most app examples seem to use a 'views' directory instead. But I want to put more than views 
app.get('/', function(req,res){
        res.render('/pages/home');
});

文件夹结构如下:

package.json
app.js
public
  index.html    //main html
  pages
    home.html    //one of a few html templates I load in using ngRoute

现在当它启动时它给出了这个错误:

Error: Cannot find module '/home/alex/node/pollstut/public/app.js'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:906:3

当然了。这是因为app.js不在公共目录中,它在根目录中。我只希望它在公共目录中查找html和js等公共内容。我希望它在项目根目录中查找app.js。我该怎么说呢?

普通HTML文件可以使用express来送达。静态的,因为它们不需要模板引擎。这将只提供文件而不进行任何处理(与提供图片或文本文件的方式相同)。

app.use(express.static(__dirname + '/public'));

我相信你的错误是你只是设置视图路径,但你没有指定使用哪个引擎。例如,您可以使用.ejs或.jade模板。这里有一个例子。

另外,我看到你只是告诉它渲染/pages/home而没有指定文件扩展名,就像你对index.html所做的那样。

这个错误看起来像是在你的app.js启动之前生成的。您使用什么命令来启动服务器?我的理论是,当您键入node app.js时,您处于pollstut/public目录中。试试cd ..等等。

此外,Manuel是正确的——通常/views中的东西都是动态模板的东西,无论是ejs还是jade或者其他本周流行的html模板语言。当你调用res.render时,你是在告诉express实际渲染一个模板而不是提供它。