Tag: 需求

是否有可能要求从您的项目目录以外的模块没有相对path?

我试图build立一个JS模块的本地库在节点项目中使用。 如果一个新项目存在于/Users/me/projects/path/to/new/project/而且我的库文件位于/Users/me/projects/library/*.js中,有没有办法在不使用相对path? 在/Users/me/projects/path/to/new/project/app.js你可以这样要求foo.js: var foo = require('../../../../../library/foo') ,这样可以工作,但是很笨重,如果文件移动了,你必须更新你的相对path。 我已经试过requireFrom和app-module-path没有运气,因为它们是相对于项目根目录。 任何想法如何从您的项目之外要求文件目录? 提前致谢!

使用VM模块运行Node.js脚本:“ReferenceError:require不是函数”

我正在编写我自己的自定义node.js服务器。 它现在处理静态页面,AJAX GET,POST和OPTIONS请求(后者用于CORS),但是我知道我select用于运行服务器端GET和POST脚本的方法并不是最优的 – 官方node.js文档指出,启动大量的子Node.js过程是一个坏主意,因为这是一个资源饥饿的方法。 它工作,但我知道,可能有更好的方法来达到相同的结果。 所以,我下了VM模块。 我首先想到的是,这将解决使用subprocess混淆机器的问题,并使我的服务器更具可扩展性。 有一个小问题。 我的服务器端脚本,用于目录列表和将结果发送回浏览器等任务,从几个require语句开始加载所需的模块。 最后编写代码来读取脚本文件,并将其传递给vm.Script(),我现在遇到一个错误: “ReferenceError:要求不是一个函数” 我从那里得知,其原因是VM为脚本启动了一个纯粹的V8执行环境,而不是一个独立的node.js执行环境。 为了使我的想法有效,我需要VM为我提供一个单独的,沙箱化的node.js执行环境。 我如何做到这一点? 我的初步研究告诉我,我需要为虚拟机执行环境提供自己独立的node.js全局副本,以便按照预期的方式执行function。 我的理解是否正确? 如果是这样,我需要采取哪些步骤来执行此任务?

在node.js中导出一个原型:module.exports = Prototype or exports.Prototype = Prototype?

什么是在node.js中导出原型的首选方法? 你可以采取两种方法: 导出原型本身 function A () { } module.exports = A; 用作: var A = require('./A.js'); var a = new A(); 将包含原型的对象导出为属性 function A () { } exports.A = A; 用作: var A = require('./A.js').A; var p = new A(); 第一个解决scheme对我来说看起来要方便得多,不过我知道有关于replaceexports对象的担心。 哪两个最好用,为什么?

node.js – 直接从require创build类的实例

我在一个单独的文件中有一堂课。 我需要在另一个文件中创build它的一个实例。 我试过这个: var connection = new require('./connection.js')("ef66143e996d"); 但是这不是我想要的。 现在我正在使用这个临时解决scheme: var Connection = require('./connection.js'); connection = new Connection("ef66143e996d"); 两个问题; 首先,为什么不这样做。 其次,我怎样才能做到这一点呢?

Nodejs +需要instanceof行为

我遇到了NodeJs中instanceof的一个奇怪的行为。 我试图创build一个模块,抛出exception,可以通过消费模块捕获,并根据exceptiontypes处理。 然而,testingtypes“ error instanceof mod.MyException ”的调用总是返回false。 mymodule.js : function MyException() {} MyException.prototype = new Error(); MyException.prototype.constructor = MyException; function Foo() { throw new MyException(); } exports.Foo = Foo; exports.MyException = MyException; myconsumingmodule.js var mod = require('mymodule'); try { mod.Foo(); } catch (error) { if (error instanceof mod.MyException) { // always returns false //do error […]