Javascript 在浏览器中生成随机字符串

Javascript 在浏览器中生成随机字符串,javascript,jquery,node.js,Javascript,Jquery,Node.js,我需要为我通过节点插入的每个Mongo文档生成一个随机的、两个单词的标识符字段 我发现了随机词,一个NPM模块。这很好,只是我只能在服务器端生成随机字符串。当我尝试在客户端代码中使用它时,函数randomWords()返回为未定义 以下是我的相关服务器代码(为了简洁起见,我取出了错误处理程序): 下面是我的服务器内容(我的全局js文件,而不是路由-尽管它在这两种情况下都不起作用): 知道我做错了什么吗?我正在导出模块,并且可以从服务器端代码(如数据库)访问其他内容,我只是不知道我在哪里弄乱了它。

我需要为我通过节点插入的每个Mongo文档生成一个随机的、两个单词的标识符字段

我发现了随机词,一个NPM模块。这很好,只是我只能在服务器端生成随机字符串。当我尝试在客户端代码中使用它时,函数randomWords()返回为未定义

以下是我的相关服务器代码(为了简洁起见,我取出了错误处理程序):

下面是我的服务器内容(我的全局js文件,而不是路由-尽管它在这两种情况下都不起作用):


知道我做错了什么吗?我正在导出模块,并且可以从服务器端代码(如数据库)访问其他内容,我只是不知道我在哪里弄乱了它。

只需将
随机词的代码
模块index.js复制到您的客户端代码中,然后将
模块.exports=words
作为
窗口重写。\u words=words


或者在客户端代码中使用一些模块系统,如
require.js

我使用上面的vmkcom建议解决了这个问题。我为其他可能从中受益的人发帖,因为我很难诊断这个问题并找出解决方法。注意:我怀疑这是一个不推荐的黑客补丁(但它在本例中有效,因为正如vmkcom指出的,index.js文件非常简单),因此如果您有一个更优雅的解决方案,请随时在下面回复

如上所述,您的浏览器无法自动访问节点模块。然而,你可以让他们这样做,这是,在理论上,伟大的。但是,当我运行Browserify时,它不起作用,当我让它运行时,它只会导致更多的错误

我所做的是从随机词github(located)中获取index.js文件,将其重命名为random.js,并将其包含在我的public/javascripts文件夹中。然后我在layout.jade模板文件中链接到它,如下所示:

    body
    block content
    script(src='http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js')
    script(src='/javascripts/global.js')
    script(src='/javascripts/random.js')

这并不理想,但确实有效。正如我所说,这是最快最脏的,所以如果你有更好的方法,请分享。

如果你在服务器端使用它,你可以这样做:

export const randomString=(长度:数字)=>{
if(process.env.SECRET_KEY===未定义)
process.env.SECRET_KEY=[…数组(长度)]
.map(()=>(~~(Math.random()*36)).toString(36))
.加入(“”);
返回process.env.SECRET_密钥;

};如何在客户端代码中包含随机词模块?这是什么意思?(这可能是我的问题,抱歉,我对Node有点陌生。)您需要它是一个真实的单词还是一个随机字符串?很遗憾,是真实的单词,还是更简单。您使用的是browserify还是其他模块化脚本加载程序?如果没有,您如何在客户端代码中公开“require”函数?通常,
var randomWords=require('random-words')
无法单独在浏览器中工作。我不太明白你的意思。您的意思是将模块的index.js文件的源复制到我的global.js文件中吗?这是否违背了通过npm包含模块的目的?您不能将npm模块包含到浏览器中。Broserify有助于解决这个问题,但如果你不想处理这个问题,那就抄吧。对于浏览器库,您需要使用
bower
或类似的东西,但是
随机词似乎只存在于npm中。npm-对于node.js,并非所有库都可以移植到browserOkay。。我在app.js(服务器)代码中使用了browserify,并将其导出为bundle.js。我把它包括在我的翡翠版式中。但是,该函数仍然是未定义的。如何调用该函数?你的bundle.js看起来怎么样?如何需要bundle.js?刚刚发现问题-我正在使用Monk,Browserify失败,因为它不能包含Monk:找不到模块'/../node_modules/Monk/node_modules/mongoskin'
// DOM Ready =============================================================
$(document).ready(function() {

    var ident = randomWords(2);

    // Add User button click
    $('#button').on('click', addUser); //addUser is a function in this doc

});
    body
    block content
    script(src='http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js')
    script(src='/javascripts/global.js')
    script(src='/javascripts/random.js')