我想我很难误解如何使用module.exports.似乎每个模块都覆盖了最后一个模块吐出的内容.
app.js:
var express = require("express")
, app = express()
, routes = require('routes')
, server = app.listen(1337, "0.0.0.0")
, io = require('socket.io').listen(server)
, redis = require("redis")
, client = redis.createClient();
Run Code Online (Sandbox Code Playgroud)
var moduleA = require("./moduleA")(io, client); (需要传递socket.io和redis客户端)
var moduleB = require("./moduleB")(io, client); (相同)
moduleA.js:
module.exports = function(io, client){
this.test = 'foo';
return this;
};
Run Code Online (Sandbox Code Playgroud)
moduleB.js:
module.exports = function(io, client){
this.test = 'bar';
return this;
};
Run Code Online (Sandbox Code Playgroud)
回到app.js:
console.log(moduleB.test);(打印"酒吧")
console.log(moduleA.test);(还打印"酒吧") …
我正在尝试使用node-config模块在运行时更改我的配置的某些参数(基本上是日志记录级别).在官方文件中说:
环境变量可用于覆盖文件配置.以$ CONFIG_开头的任何环境变量都将设置到CONFIG对象中.
我已经检查过,当服务器启动时这是真的,但一旦启动它似乎不起作用.(更改环境变量时,永远不会调用watch函数的处理函数,这与runtime.json文件中的更改或直接更改配置变量不同).
我目前正在观看整个CONFIG对象:
var CONFIG = require('config');
CONFIG.watch( CONFIG , null , function(object, propertyName, priorValue, newValue){
console.log("Configuration change detected");
});
Run Code Online (Sandbox Code Playgroud)
有谁知道这是否可能?
我刚创建了一个node_module,其依赖关系为'validator'.但是当我从npm安装它时,它不会在自己的node_module目录中安装'validator'模块.我不明白为什么,但这是我第一次创建自己的节点模块.
的package.json:
{
"name": "validator-extended",
"description": "String validation and sanitization based on validator.js",
"version": "1.1.0",
"homepage": "https://github.com/Ayolan/validator-extended",
"keywords": [
"validator",
"validation",
"validate",
"sanitization",
"sanitize",
"sanitisation",
"sanitise",
"assert",
"extend",
"extended"
],
"author": "Vadorequest <https://github.com/Vadorequest>",
"main": "app.js",
"bugs": {
"url": "https://github.com/Ayolan/validator-extended/issues"
},
"repository": {
"type": "git",
"url": "https://github.com/Ayolan/validator-extended.git"
},
"engines": {
"node": ">= 0.8"
},
"licenses": [
{
"type": "MIT",
"url": "https://github.com/Ayolan/validator-extended/raw/master/LICENSE"
}
],
"dependencies": {
"validator": "~3.1"
}
}
Run Code Online (Sandbox Code Playgroud)
我还有一个.npmignore文件:
########################
# node.js / npm
########################
lib-cov
*.seed
*.log
*.csv
*.dat …Run Code Online (Sandbox Code Playgroud) 即使我构建package.json并运行
npm install ./
npm安装依赖项的依赖项,即使它完全相等。
例如)ExpressJs 4.0.0-rc4 node_modules / cookie === cookie-parser node_modules / cookie
当nodeJs加载文件时,将按文件缓存它。因此,如果npm不共享依赖项,则同一模块可以被解析几次,并使用更多的内存。
刚开始熟悉Hapi.Hapi使用插件为您的应用程序添加组件.我很难理解为什么我会使用插件,当我可以做以下事情:
var lib = require('whatever lib from npm');
Run Code Online (Sandbox Code Playgroud)
两者有什么不同?
我只是开始nodejs / express开发并绊倒流。这是场景:
我想读取文件,处理内容(全部在模块中),然后返回处理后的输出,以便可以显示它。我该如何实现?
这是一些代码:
app.js
var express = require('express');
var parseFile = require('./parse_file.js');
app.get('/', function(req, res, next){
parsedExport = parseFile(__dirname+'/somefile.txt');
res.send(parsedExport);
});
server = http.createServer(app);
server.listen(8080);
Run Code Online (Sandbox Code Playgroud)
parse_file.js
var fs = require('fs');
var ParseFile = function(filename) {
var parsedExport = [];
rs = fs.createReadStream(filename);
parser = function(chunk) {
parsedChunk = // Do some parsing here...
parsedExport.push(parsedChunk);
};
rs.pipe(parser);
return parsedExport;
};
module.exports = ParseFile;
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我展示一个有效的示例,该如何实现?或指出正确的方向?
我正在尝试将我的项目推送到github和heroku.由于我在我的应用程序中使用nodejs,因此我有node_modules.在我提交之前,我创建了一个名为.gitignore忽略节点模块的文件.
在文件中我添加了node_modules并尝试从comandline/Terminal推送到GitHub.我没想到节点模块会被推送,但它们最终出现在回购中.我有什么方法可以遵循,我在这方面需要帮助; 谢谢!
- $ git rm -r --cached node_modules
将node_modules /添加到.gitignore文件
- $ git commit -m "remove the ignored directory node_modules"
然后
- $ git push origin master
,如果刷新GitHub页面,您将看到node_modules消失.
我们的项目使用npm进行包管理.从npm 4升级到npm 5后,我们决定选择加入新版本package-lock.json.
提交并npm install在其他计算机上执行后,我们发现了指定版本和已解决条目的方式的差异:
1)package-lock.json依赖项的示例,version编码为URL:
"jspm": {
"version": "https://registry.npmjs.org/jspm/-/jspm-0.16.52.tgz",
"integrity": "sha1-axhH4I8TGsm9JnzFiXSXmudnXS4=",
"dev": true
},
"systemjs": {
"version": "https://registry.npmjs.org/systemjs/-/systemjs-0.19.46.tgz",
"integrity": "sha1-wEV0szNfBSoOPHoA7kGIxuTB444=",
"dev": true
},
Run Code Online (Sandbox Code Playgroud)
2)package-lock.json依赖项的例子version和resolved属性:
"jspm": {
"version": "0.16.53",
"resolved": "https://registry.npmjs.org/jspm/-/jspm-0.16.53.tgz",
"integrity": "sha1-VvNR9JWUyJM+XgG2UUWsrr/PtZ4=",
"dev": true,
"dependencies": {
...
}
},
"systemjs": {
"version": "0.19.46",
"resolved": "https://registry.npmjs.org/systemjs/-/systemjs-0.19.46.tgz",
"integrity": "sha1-wEV0szNfBSoOPHoA7kGIxuTB444=",
"dev": true
},
...
Run Code Online (Sandbox Code Playgroud)
除了不稳定的package-lock.json之外,我们的构建服务器在安装第一个示例时遇到了问题.
我尝试用brew卸载节点,但我遇到了以下问题,我似乎没有解决.
当我运行时brew uninstall node,我收到以下错误消息:
Uninstalling /usr/local/Cellar/node/10.5.0_1... (7,893 files, 34.2MB)
Error: Directory not empty @ dir_s_rmdir - /usr/local/Cellar/node/10.5.0_1
Run Code Online (Sandbox Code Playgroud)
不知道如何解决这个问题?我可以删除这个文件吗?
感谢您的任何帮助.
模块A的package.json将模块B列为依赖项
"dependencies": {
"@mynamespace/module-b": "^0.0.1",
Run Code Online (Sandbox Code Playgroud)
模块B是本地模块,已成功从模块A与链接npm link。编译/运行一切顺利。
但是,当我尝试在模块A中安装任何新模块npm install something或只是运行时,npm install或者npm uninstall something总是从npm收到错误消息,即找不到本地模块(npm链接)。
C:\web\module-b>npm install
npm ERR! code E404
npm ERR! 404 Not Found: @mynamespace/module-b@^0.0.1
Run Code Online (Sandbox Code Playgroud)
我按照这里的建议检查了两个模块中的main属性package.json。有几个类似的问题,但似乎没有一个完全是这个问题或给出了可行的解决方案。
现在,我手动从package.json中删除所有提及的链接模块,然后运行npm命令,然后将它们添加回package.json中。
我正在使用npm 6.1.0
编辑:嗯,这可能很关键吗?@ mynamespace / module-b在NPM注册表中尚不存在,仅在本地
node-modules ×10
node.js ×6
npm ×3
express ×2
dependencies ×1
git ×1
github ×1
gitignore ×1
hapijs ×1
homebrew ×1
javascript ×1
npm-link ×1
package.json ×1