我根据用户的角色创建了一个动态菜单栏。在服务器端,当用户登录时,我将他们所有允许的页面存储在他们的会话中。
现在,我有 15 个模板。menubar.html我在每一页上都包含了文件。我想使用会话数据,而menubar.html不必每次都显式传递它。
我尝试过以下代码:
app.get('/home',function(req,res)){
res.render('home',{menu : req.session.menubar})
}
app.get('/contact',function(req,res)){
res.render('contact',{menu : req.session.menubar})
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我需要在每个页面上传递会话数据。如果我有 50 个 html 模板,那么在每个路由中传递会话的效率并不高。
处理这个问题的最佳方法是什么?
我目前正在使用uuidnpm 包为应用程序中的图形数据库元素生成唯一 ID node.js。
它生成符合 RFC 标准的 128 位长 ID,例如
6e228580-1cb5-11e8-8271-891867c15336
Run Code Online (Sandbox Code Playgroud)
我目前正在考虑转向shortidnpm package,它执行类似的工作,但生成 7 位长 ID:
PPBqWA9
Run Code Online (Sandbox Code Playgroud)
我的数据库请求已经很长,我想缩短它们,所以我正在考虑从 切换uuid到shortid.
然而,问题是:我知道 128 位长的 UUID 生成器保证它是唯一的。那7位的呢?我知道它可以提供78364164096独特的可能性,这还不错,但是我的数据库中已经有大约 50M 的独特对象,每个对象都有一个唯一的索引,所以我只是好奇该算法是否真的能够生成唯一的索引ID考虑到78364164096仅是50000的1350倍。
有任何想法吗?我应该使用 7 位标识符还是 128 位标识符?
我试图module.exports在我的 NodeJS 模块中添加两个。我为我的模块尝试了以下代码:
exports.one = function(data){
const one = data;
};
module.exports = function(msg) {
console.log(one+'::'+msg);
};
Run Code Online (Sandbox Code Playgroud)
下面是index.js 的代码:
var myModule = require('./mymodule.js');
myModule.one('hi');
myModule('bro');
myModule('Dear');
myModule('Dude');
Run Code Online (Sandbox Code Playgroud)
我预计它将把以下数据记录到控制台中:
hi bro
hi Dear
hi Dude
Run Code Online (Sandbox Code Playgroud)
但控制台说:
TypeError: myModule.one is not a function
at Object.<anonymous> (....
Run Code Online (Sandbox Code Playgroud)
请问我该如何解决这个问题?有 Stack Overflow 问题询问如何在 NodeJS 模块中使用多个 module.exports。但答案如下:
exports.one = function (){};
exports.two = function (){};
Run Code Online (Sandbox Code Playgroud)
但如果我使用该代码,我必须使用
myModule.one('hi');
myModule.two('bro');
myModule.two('Dear');
myModule.two('Dude');
Run Code Online (Sandbox Code Playgroud)
代替:
myModule.one('hi');
myModule('bro');
myModule('Dear');
myModule('Dude');
Run Code Online (Sandbox Code Playgroud) 我已经用brew更新了yarn,但我无法再运行yarn命令。我尝试从brew和npm卸载并重新安装并清除所有缓存,但没有成功。当前安装的版本是1.22.4。
internal/modules/cjs/loader.js:983
throw err;
^
Error: Cannot find module '/Users/..../.yarn/releases/yarn-1.22.0.js'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:980:15)
at Function.Module._load (internal/modules/cjs/loader.js:862:27)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
at internal/main/run_main_module.js:18:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
Run Code Online (Sandbox Code Playgroud) 我正在使用create-react-app版本 4 和cra-template-pwa.
从serviceWorkerRegistration.js的源代码来看,由于该检查,服务工作线程似乎仅在生产中注册:
export function register(config) {
if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {
// Logic to register the service worker can be found here.
}
Run Code Online (Sandbox Code Playgroud)
我也想在开发模式下注册服务工作者。我取出了process.env.NODE_ENV === 'production'支票和另一张isLocalhost支票。
开发版本尝试www.example.com/service-worker.js按照我希望的方式加载服务工作者。问题是服务工作线程文件未编译到该public文件夹中,因此www.example.com/service-worker.js返回一个404.
手动将文件复制到public文件夹也不起作用:
未捕获的语法错误:无法在模块外部使用 import 语句
有没有办法让 Service Worker 在开发模式下工作?
javascript node-modules reactjs service-worker create-react-app
我向我的项目添加了一个包含类型的模块,但 VSCode 无法找到这些类型并给出错误:“未找到...的类型定义”。
我正在尝试动态导出模块。我已经很接近了,但不知道如何修复我的语法。
硬编码:
// index.js inside folder 'models'
const { User } = require('./User');
const { Token } = require('./Token');
const { Session } = require('./Session');
module.exports = {
User,
Token,
Session,
};
Run Code Online (Sandbox Code Playgroud)
动态编码(不起作用):
// index.js inside folder 'models'
const fs = require('fs');
const path = require('path');
module.exports = () => {
fs.readdirSync(__dirname).forEach((file) => {
if (file === 'index.js') return false;
const fullName = path.join(__dirname, file);
if (file.toLowerCase().indexOf('.js')) {
// I think this somehow needs to be destructured like
// `return …Run Code Online (Sandbox Code Playgroud) 我有一个可执行文件myutil.exe,我从 Nodejs 模块调用它来执行一些功能。我希望将其打包,将我的 NodeJS 模块发布到 npmjs.com,并且在这个 Windows 平台上使用时,可执行文件应该是此 NodeJS 库的一部分,因为我的 NodeJS 代码调用可执行文件来执行功能。我已经从 nodejs 运行了这个命令行二进制文件。
如何做到这一点以及如何最好地将这个可执行二进制文件包含在其中?它应该以某种方式托管在包之外吗?
另请注意,这只是一个限制,目前它必须是 Windows 上的可执行文件,或者由于其内部代码的性质,它必须是 Linux 系统上可运行的二进制文件,不能是 DLL/库。稍后也许我可以将其一些代码移至 DLL/库中。
我正在使用 p-tabview,我想实现可滚动属性,如 primeng 网站中所述: https: //www.primefaces.org/primeng/showcase/#/tabview
但我收到一条错误消息,指出无法绑定到“可滚动”,因为它不是“p-tabView”的已知属性。我错过了什么吗?
StackBlitz 演示: https://stackblitz.com/edit/primeng-tabview-demo-jj9f2g ?file=src/app/app.component.ts
参考代码:
<div class="card">
<h5>Default</h5>
<p-tabView [scrollable]="true">
<p-tabPanel header="Header 1"> Content 1 </p-tabPanel>
<p-tabPanel header="Header 2"> Content 2 </p-tabPanel>
<p-tabPanel header="Header 3"> Content 3 </p-tabPanel>
<p-tabPanel header="Header 3"> Content 3 </p-tabPanel>
</p-tabView>
</div>
Run Code Online (Sandbox Code Playgroud) 我正在迁移一些节点包,这已经变得非常令人头疼。
\n目前,我的 package.json 如下所示:
\n{\n //These are the updated dependencies and Jest configurations\n "dependencies": {\n "@google-cloud/logging-winston": "^4.0.2",\n "@google-cloud/secret-manager": "^3.2.3",\n "@google-cloud/storage": "^5.7.0",\n "@nestjs/common": "^8.2.3",\n "@nestjs/config": "^1.1.5",\n "@nestjs/core": "^8.2.3",\n "@nestjs/jwt": "^8.0.0",\n "@nestjs/mongoose": "^9.0.1",\n "@nestjs/passport": "^8.0.1",\n "@nestjs/platform-express": "^8.2.3",\n "bcrypt": "^5.0.1",\n "class-transformer": "^0.5.1",\n "class-validator": "^0.13.2",\n "dayjs": "^1.9.7",\n "helmet": "^4.2.0",\n "mongoose": "^6.0.14",\n "nanoid": "^3.1.20",\n "nest-winston": "^1.4.0",\n "p-all": "^3.0.0",\n "passport": "^0.4.1",\n "passport-jwt": "^4.0.0",\n "passport-local": "^1.0.0",\n "reflect-metadata": "^0.1.13",\n "rxjs": "^7.4.0",\n "winston": "^3.3.3"\n },\n "devDependencies": {\n "@nestjs/cli": "^8.1.5",\n "@nestjs/schematics": "^8.0.5",\n "@nestjs/testing": "^8.2.3",\n "@types/bcrypt": "^5.0.0",\n "@types/express": "^4.17.13",\n …Run Code Online (Sandbox Code Playgroud) node-modules ×10
node.js ×7
javascript ×4
npm ×4
express ×2
angular ×1
ejs ×1
es6-modules ×1
jestjs ×1
module ×1
node-uuid ×1
primeng ×1
reactjs ×1
types ×1
typescript ×1
uuid ×1
yarnpkg ×1