Can';无法在外部javascript中访问局部变量

Can';无法在外部javascript中访问局部变量,javascript,sails.js,Javascript,Sails.js,我正在开发sails.js应用程序,我想在其中访问外部javascript文件中的本地文件。我以{error:“username”}的形式返回数据作为响应,我可以通过调用视图中的轻松访问数据。但是我有另一个外部javascript文件,在它里面我想做console.log(error),但它总是未定义的。我也尝试过另一种方式,在外部javascript中声明函数,比如函数notifyError(error){console.log(error)},但当我试图从视图调用此函数时,它会说此函数未定义

我正在开发sails.js应用程序,我想在其中访问外部javascript文件中的本地文件。我以
{error:“username”}
的形式返回数据作为响应,我可以通过调用视图中的
轻松访问数据。但是我有另一个外部javascript文件,在它里面我想做
console.log(error)
,但它总是未定义的。我也尝试过另一种方式,在外部javascript中声明函数,比如
函数notifyError(error){console.log(error)}
,但当我试图从视图调用此函数时,它会说此函数未定义


有没有关于如何将视图与外部javascript文件连接的想法?我之所以想要它,是因为我正在使用PNotify,而且它总是说这是未定义的,即使我已经将其导入了PNotify。

从我的角度来看,您不了解视图、服务器端渲染和EJS是如何工作的!当你编码
时,你不是在“声明一个变量”。您的意思是:“用其内容替换
”。因此,您提供的HTML文件,而不是像“我的错误在这里”这样的静态字符串,您可以通过编程更改它。情况就是这样:

Sails app / Server side:
("view.ejs")
<div>
    <%= error %>
</div>

("anyController.js")
res.render('view.ejs', {error : "my error string"});

User side:
<div>
    my error string
</div>
Sails应用程序/服务器端:
(“view.ejs”)
(“anyController.js”)
res.render('view.ejs',{error:“我的错误字符串”});
用户端:
我的错误字符串
看看这些文件


编辑:如果您想更改视图中的任何内容,可以使用外部js文件并将其提供给客户端(简单脚本标记)。像Angular、VueJS等库就足够了。这些LIB可以向您的Sails应用程序发出get/post请求,该应用程序应该提供json答案。再次,请仔细查看文档

在我看来,您不了解视图、服务器端渲染和EJS的工作原理!当你编码
时,你不是在“声明一个变量”。您的意思是:“用其内容替换
”。因此,您提供的HTML文件,而不是像“我的错误在这里”这样的静态字符串,您可以通过编程更改它。情况就是这样:

Sails app / Server side:
("view.ejs")
<div>
    <%= error %>
</div>

("anyController.js")
res.render('view.ejs', {error : "my error string"});

User side:
<div>
    my error string
</div>
Sails应用程序/服务器端:
(“view.ejs”)
(“anyController.js”)
res.render('view.ejs',{error:“我的错误字符串”});
用户端:
我的错误字符串
看看这些文件


编辑:如果您想更改视图中的任何内容,可以使用外部js文件并将其提供给客户端(简单脚本标记)。像Angular、VueJS等库就足够了。这些LIB可以向您的Sails应用程序发出get/post请求,该应用程序应该提供json答案。再次,请仔细查看文档

嗯,经过一番挖掘,我现在更明白了。我在我的函数调用中使用了,所以它类似于alert(“”);现在它正在工作。如果您在使用内部javascript和纯html时做一些编辑来调整您的答案,我将接受itEJS,服务器端呈现应该用于动态更改内容,但只作为静态html文件提供一次。因此,在给定参数的情况下,应该使用它以不同的方式呈现一个页面,因此您可以编写一个“profile.ejs”页面,该页面可用于任何当参数更改时其内容发生更改的概要文件。所以,如果我理解正确的话,你想要达到的目的不是很好的实践。但是你可以用这样的标签来做:myvar=.Hmm经过一番挖掘,我现在更明白了。我在我的函数调用中使用了,所以它类似于alert(“”);现在它正在工作。如果您在使用内部javascript和纯html时做一些编辑来调整您的答案,我将接受itEJS,服务器端呈现应该用于动态更改内容,但只作为静态html文件提供一次。因此,在给定参数的情况下,应该使用它以不同的方式呈现一个页面,因此您可以编写一个“profile.ejs”页面,该页面可用于任何当参数更改时其内容发生更改的概要文件。所以,如果我理解正确的话,你想要达到的目的不是很好的实践。但是您可以使用这样的标记:myvar=。