Tag: 需要

处理Node.js使用“require”(节点ORM)的asynchronous返回

我正在使用Node.js ORM模块: https : //github.com/dresende/node-orm 我可以通过这样做来创build一个模型: var orm = require("orm"); var db = orm.connect("creds", function (success, db) { if (!success) { console.log("Could not connect to database!"); return; } var Person = db.define("person", { "name" : { "type": "string" }, "surname": { "type": "string", "default": "" }, "age" : { "type": "int" } }); }); 问题是,我想把人(和所有其他模型)在外部包括。 […]

Node.js要求不将其存储到variables中

我有下面的代码片段,它在其上下文中工作。 "use strict"; require('chromedriver'); var selenium = require('selenium-webdriver'); var driver = new selenium.Builder() .forBrowser('chrome') .build(); 我不明白的是这一行: require('chromedriver'); 如果我删除它,我得到一个错误: Error: The ChromeDriver could not be found on the current PATH. Please download the latest version of the ChromeDriver from http://chromedriver.storage.googleapis.com/index.html and ensure it can be found on your PATH. 所以它做了一些事情。 我明白什么var chromedriver = require('chromedriver'); 并且我只看到了迄今为​​止使用的require函数。 所以我的问题关于行: […]

来自Electron渲染器进程的require()节点模块通过HTTP提供服务

通常,在Electron应用程序中,您可以从主进程和渲染器进程中require节点模块: var myModule = require('my-module'); 但是,如果页面是通过HTTP加载而不是从本地文件系统加载的,这似乎不起作用。 换句话说,如果我打开一个这样的窗口: win.loadURL(`file://${__dirname}/index.html`); 我可以require一个节点模块没有问题。 但是,如果我打开一个这样的窗口: win.loadURL(`http://localhost:1234/index.html`); 我不再require在我的网页内的节点模块 – 我得到Uncaught Error: Cannot find module 'my-module'网页的控制台Uncaught Error: Cannot find module 'my-module' 。 有什么办法可以在通过HTTP提供的Electron页面中使用节点模块? 一点上下文:我的公司正在构build一个应用程序,需要能够作为一个Web应用程序, 并在一个电子壳内。 为了使这两个环境更简单和一致,我的Electron应用程序启动本地Web服务器并打开托pipe在http://localhost:1234的应用程序。 现在,我希望能够使用electron-spell-check-provider程序将拼写检查/拼写build议添加到应用electron-spell-check-provider 。 这个模块需要在渲染器进程中被导入和初始化,所以我试图在我的网页中require('electron-spell-check-provider') ,但是这样会导致Cannot find module错误。

需要在nodeJS中从一个固定的根相对访问模块

我试图访问模块,但嵌套有点失控 require("../../../Folder/Deeper/someFile") 反正只要使用require("Folder/Deeper/somefile") 我试过设置 require.paths = ['/media/work/Project']; 但是这似乎不起作用,对我来说也感觉有点难看。 有没有其他的select。 有没有什么办法来写这个包装呢?

如何避免节点需要加载相同的模块两次

我正在开发一个节点模块my-module ,而这又取决于另一个模块other-module 。 other-module是一个在我的模块的package.json中明确列出的依赖项。 因为我other-module只是通过require d来修改other-module模块的行为,所以重要的是other-module other-module只require加载一次,并且这个一次性的“实例”是在任何需要my应用程序中引用的实例和other 。 我期望这根据节点的模块caching策略保持真实,但是我在写一个简单的testing应用程序时遇到了这样的情况: 如果my-module是npm install 在 other-module 之前,那么后者是作为前者的依赖而引入的。 npm install other-module再次将其带入node_modules层次结构中。 然后,当我的模块需要other-module ,节点加载我的模块的“本地”副本,当应用程序require时,节点再次加载它(这次是由于第二次npm install而安装的版本)。 这显然不是预期的结果。 如果my-module是npm installe 在 other-module那么我最终只有一个在node_modules other-module的副本,我的testing应用程序按预期工作。 这种行为让我再次查看节点的相关策略,果然我遇到了“模块caching警告”: 模块基于他们parsing的文件名被caching。 由于模块可能会根据调用模块的位置(从node_modules文件夹加载)parsing为不同的文件名,因此不能保证require('foo')将始终返回完全相同的对象,如果parsing为不同的文件。 在这一点上,它看起来像我的模块可能会或可能不会像预期的取决于npm install的顺序。 我有什么最佳做法吗? 有没有办法避免这个混乱,而不改变我的模块的工作方式?

为什么我们需要传递module.exports作为参数,因为我们已经将模块作为parameter passing了?

我一直在浏览一些关于Node.js的在线教程。 我所理解的是,在使用require(./file-path)函数时,节点获取该文件的内容并包装在一个即时调用函数 (function(exports, require, module, __filename, __dirname) { // content }()) 我明白exports和module.exports之间的区别。 这就是我在互联网上看到的关于search上述问题的全部内容。 但是,我的问题是,为什么我们需要将module.exports和module传递给包装IIFE? 我们可以单独传递模块,然后从中获取module.exports 。 这样做有什么好处吗? 通常,当我们将一个对象传递给一个函数时,我们不必另外传递object.property 。

Node.js – 需要mongoose在这里和那里造成冗余?

我有以下的Node.js目录结构。 |–app/ |–app.js |–routers/ |–index.js/ |–models/ |–schemas.js |–post.js 在app.js中 ,有一行喜欢这个mongoose.connect('mongodb://localhost/' + config.DB_NAME); 。 在schema.js中 : var mongoose = require('mongoose') , Schema = mongoose.Schema , ObjectId = Schema.ObjectId; var PostSchema = new Schema({ title: String , author: String , body: String , creataAt: { type: Date , default: Date.now } }); // other schemas goes here […]

在Node中,如何在eval中需要文件?

我有两个文件test.js和x.js ,在同一个目录中: test.js : console.log(eval( "require('x.js')" )); x.js是空的。 预期 : require返回undefined ,所以没有logging。 实际 : node test.js给我Error: Cannot find module 'x.js' (为了简洁,省略了堆栈跟踪)。 情况听起来类似于这个其他问题 ,与我已经使用eval而不是new Function的差异,并require 被定义,只是意外地工作。 为什么是这样? 如何正确地require eval代码中的模块?

节点JS需要抛出AssertionError:缺lesspath

我被困在一个问题几个小时,但无法find它。 我有一个简单的应用程序写入节点js: var mongo = require('./helpers/mongo_utils.js'); var express = require('express'); var user = require('./models/users.js'); mongo.connect(function (err) { if (err) throw err; console.log('connected'); var app = express(); app.listen(3000, function () { console.log('Server set up and start listening on port 3000'); }) }) 所有作品除了我需要的users.js文件。 如果我不需要它,我没有问题,但是当我这样做时,我得到了这个错误: assert.js:89 throw new assert.AssertionError({ ^ AssertionError: missing path at Module.require (module.js:363:3) at […]

要求使用TypeScript,SystemJS和Electron的nodejs“child_process”

我正在研究一个简单的nodejs 电子 (以前称为primefaces壳)项目。 我正在使用angular 2编写它,使用项目相同的项目设置,他们build议在typescript的文档中: TSC: { "compilerOptions": { "target": "es5", "module": "system", "moduleResolution": "node", "sourceMap": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, "removeComments": false, "noImplicitAny": false }, "exclude": [ "node_modules", "typings/main", "typings/main.d.ts" ] } 我需要运行一个命令,我发现我可以用节点“child_process”来完成。 无论如何我无法find“导入”或“要求”,而从node.d.ts文件中使用它的types。 我在node.d.ts文件中find了适合我需要的“child_process”接口,这就是它在node.d.ts文件中的样子: declare module "child_process" { import * as events from "events"; import * as stream from "stream"; export interface ChildProcess […]