相关疑难解决方法(0)

await仅在异步函数中有效

我写了这段代码 lib/helper.js

var myfunction = async function(x,y) {
   ....
   reutrn [variableA, variableB]
}
exports.myfunction = myfunction;
Run Code Online (Sandbox Code Playgroud)

然后我试着在另一个文件中使用它

 var helper = require('./helper.js');   
 var start = function(a,b){
     ....
     const result = await helper.myfunction('test','test');
 }
 exports.start = start;
Run Code Online (Sandbox Code Playgroud)

我收到了一个错误

"await仅在异步函数中有效"

有什么问题?

javascript node.js

77
推荐指数
6
解决办法
11万
查看次数

在node.js中更正异步函数导出

我的自定义模块包含以下代码:

module.exports.PrintNearestStore = async function PrintNearestStore(session, lat, lon) {
...
}
Run Code Online (Sandbox Code Playgroud)

如果在我的模块外部调用函数,它工作正常,但如果我调用内部运行时出错:

(node:24372)UnhandledPromiseRejectionWarning:未处理的promise promise(拒绝id:1):ReferenceError:PrintNearestStore未定义

当我将语法更改为:

module.exports.PrintNearestStore = PrintNearestStore;

var PrintNearestStore = async function(session, lat, lon) {

}
Run Code Online (Sandbox Code Playgroud)

它开始在模块内部工作正常,但在模块外部失败 - 我收到错误:

(node:32422)UnhandledPromiseRejectionWarning:未处理的promise promise(拒绝id:1):TypeError:mymodule.PrintNearestStore不是函数

所以我把代码更改为:

module.exports.PrintNearestStore = async function(session, lat, lon) {
    await PrintNearestStore(session, lat, lon);
}

var PrintNearestStore = async function(session, lat, lon) {
...
}
Run Code Online (Sandbox Code Playgroud)

现在它适用于所有情况:内部和外部.但是想要了解语义,是否有更美观,更短的写作方式?如何正确定义和使用异步函数:内部和外部(导出)模块?

javascript node.js async-await

41
推荐指数
3
解决办法
5万
查看次数

如何使用Node.js管理服务器端的多个JS文件

我正在使用Node.js开发一个项目,服务器端代码变得越来越大,我想把它拆分成多个文件.它似乎已经在客户端完成了很长时间,通过script为每个文件插入一个标记来完成开发,并且仅用于分发类似于"Make"用于将所有内容放在一起.我意识到连接所有服务器端代码是没有意义的,所以我不会问如何做到这一点.我能找到的最接近的东西是require(),但是它的行为script与浏览器中的行为不同,因为要求的文件不共享公共名称空间.

看看一些较旧的Node.js项目,比如Shooter,看起来曾经不是这样,或者我在代码中遗漏了一些非常简单的东西.我的require'd文件在编译时和运行时都无法访问全局调用命名空间.有没有简单的方法或者我们是否被迫使所有需要的JS文件完全从调用范围中自治?

javascript development-environment node.js

40
推荐指数
2
解决办法
4万
查看次数