Haiku Generator - 如何运行这个脚本? [复制]

Posted

技术标签:

【中文标题】Haiku Generator - 如何运行这个脚本? [复制]【英文标题】:Haiku Generator - How to run this script? [duplicate] 【发布时间】:2014-10-08 14:08:23 【问题描述】:

我一直在尝试创建一个非常非常基本的 Haiku 生成器,它从大型字典文件中解析文本,然后(至少现在)选择具有 5 或 7 个音节的单词并输出他们。

下面是我第一次尝试代码,但我现在遇到的问题是我不知道如何测试或运行这段代码。当我通过我的 Chrome JS 控制台输入它时,我收到错误“require is not defined”,这是解析数据的代码的一个组成部分,所以我不知道如何解决这个问题。任何人都可以对此提供一些见解吗?

这是我的代码:

var fs = require("fs");
// open the cmu dictionary file for "reading" (the little r)
// cmudict_file = File.open('cmudict.txt', 'r')
var wordArray = [];
var phonemeArray = [];
var syllArray = [];

// When parsing the dictionary file, I want it to output into two arrays of the same length
// The arrays will be parallel, so wordArray[i] will refer to the word
// phonemeArray[i] will refer to the phoneme for that word, and syllArray[i] will refer to the number of syllables in that word.

fs.readFile('cmudict.txt', function(err, data) 
  if(err) 
    return console.log(err);
  
  var lines = data.toString().split("\n");
  lines.forEach(function(line) 
    line_split = line.split("  ");
    wordArray.push(line_split[0]);
    phonemeArray.push(line_split[1]); 
  );
);

//This function will create an array of the number of syllables in each word.

function syllCount(phonemeArray)
    var sylls = [];
    for (i = 0, x = phonemeArray.length; i < x; i++)
        sylls = phonemeArray.match(/\d/);
        syllArray.push(sylls.length);
    


//Here I want to create arrays of words for each number of syllables.
//Since I am only looking for 5 and 7 syllable words now, I will only put those into arrays.
//In order to make it easy to expand for words of other syllable counts, I will use a switch statement rather than if/else

var syllCount5 = [];
var syllCount7 = [];

function syllNums(syllArray) 
    for (i = 0, x = syllArray.length; i < x; i++) 

    switch (syllArray[i]) 
        case 5:
            syllCount5.push(wordArray[i]);
            break;
        case 7:
            syllCount7.push(wordArray[i]);
            break;
    



//Now we will generate the random numbers that we will use to find the words we want

function getNum(min, max) 
  return Math.floor(Math.random() * (max - min)) + min;


var fivesLength = syllCount5.length;
var sevensLength = syllCount7.length;


function writeHaiku()

    var x = getNum(0, fivesLength - 1);
    var y = getNum(0, sevensLength - 1);
    var z = getNum(0, fivesLength - 1);
    console.log(syllCount5[x] + '\n' + syllCount7[y] + '\n' + syllCount5[z]);

谢谢!

【问题讨论】:

看起来像 Node,而不是浏览器 JS。浏览器 JS 中的 Require 是异步的,因此无法加载这样的脚本。并且只有 (?) Node 可以进行文件系统操作。 【参考方案1】:

看起来您正在尝试在这里使用节点,因此您应该使用以下命令从命令行运行它:

node <name_of_file>

这在 Chrome 上不起作用,因为 node 是一个服务器端平台,但 Chrome 控制台是用于客户端的东西。

【讨论】:

啊,好的,感谢您的帮助。我以前没有使用过节点,我得到了解析脚本。由于我无法使用控制台,调试节点的最佳方法是什么?我的俳句又回来了“未定义未定义未定义”,因为它每行只有三个音节,所以不会这样做;) 这可能对http://***.com/questions/1911015/how-to-debug-node-js-applications 有所帮助。至于undefineds,这可能表明您使用的数组索引超出范围。

以上是关于Haiku Generator - 如何运行这个脚本? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

flax (google) 和 dm-haiku (deepmind) 之间的主要区别是啥?

Xmake v2.7.7 发布,支持 Haiku 平台,改进 API 检测和 C++ Modules 支持

Solution -「ARC 058C」「AT 1975」Iroha and Haiku

机架错误 - LoadError:无法加载此类文件

loadrunner运行负载测试时一直提示:Load Generator 名称无效; Load Generator 不存在。

express-generator-typescript 生成的包无法成功运行调试器