如何设置服务器启动js文件的搜索路径
Node.js - how to set search path for server start js file.
这是在我的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实际渲染一个模板而不是提供它。
相关文章:
- 从文本文件js中读取列表
- 当我用ctrl+p搜索时,为什么要在谷歌chrome上使用inspect来调试缺少显示文件js
- 获取用于外部JavaScript文件(.js)的代码提示
- 如何将Javascript文件(.js文件)放在web服务器中
- 如何将 JavaScript 文件(.js 文件)添加到 C# 项目并从 C# 代码调用 JavaScript 方法
- 在 Node 中包含 javascript 文件.js无需 require('.') ing
- 如何使用jquery显示多个文件.多文件.js
- 使用 PDF 打开 PDF 文件.js而不将文件作为查询字符串传递
- 转换颜色十六进制值以用于三个 JSON 文件.js
- 如何使用 jQuery 选择多个文件.多文件.js插件?使用单个关闭按钮一次选择多个文件
- 如何在 Gulp 任务中间添加 CSS 文件.js
- 如何从Dropzone上传和删除文件.js
- 如何在视频中添加视频文件.js 4.2.1.
- 从快速节点下载文件.js具有 JWT 授权
- 访问 JavaScript 文件.js中的 C# 变量
- 在节点中热重载外部 js 文件.js如果文件有任何更改
- 如何在一台服务器中运行不同的.js文件.js NODE JS中的文件
- 如何在多文件.js中上传文件时检查文件扩展名
- 将文件.js中的var导入到模块joomla的模板中,并使用后台进行修改
- 在path项目中编写文件js脚本