定义未定义 Javascript 节点

Posted

技术标签:

【中文标题】定义未定义 Javascript 节点【英文标题】:define is not defined Javascript Node 【发布时间】:2015-04-11 13:59:09 【问题描述】:

我正在尝试使用 Node 运行 javascript 文件以将博客更新发布到 Tumblr。

到目前为止,在我的 main.js 文件中,我有这个:

// Tumblr Information
var tumblr = require('./vendor/tumblr');
tumblr.request(require('request'));
var Blog;

var jq = require('./vendor/jquery-1.11.1.min');
var reqq = require('./vendor/require');
var inher = require('./vendor/inheritance');

var grammars = require('./tracery/grammar');

但是当我运行 node main.js 时收到以下错误

ReferenceError: define is not defined
    at Object.<anonymous> (B:\Documents\Google Drive\Programming\CMPM 147 Tracery\Tumblr Tracery\js\
tracery\grammar.js:6:1)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (B:\Documents\Google Drive\Programming\CMPM 147 Tracery\Tumblr Tracery\js\
main.js:11:16)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)

这里是在 Grammar.js 文件中抛出错误的地方:

define(["./modifiers", "./node"], function(universalModifiers, Node) 'use strict';

    // other stuff...
);

我认为没有正确加载模块,因为它表明未定义定义函数。我相信这个函数来自 requireJS 但我认为我没有正确加载它。有没有人对为什么没有定义定义有任何建议,或者对如何加载正确的模块有任何建议?

谢谢。

【问题讨论】:

代码的 tumblr 部分没有引发投诉。我找到了 tumblr 部分,但导致问题的行是: var grammars = require('./tracery/grammar') 啊,我明白了——路径的 tumblr 部分将我引向了那个方向。 你为什么使用define?这不是你在 Node.js 中定义模块的方式 【参考方案1】:

看起来您正在尝试加载根据 AMD(异步模块定义)模式编码的库,Node 本身不支持该模式。库的作者完全有可能编写这样的库,以便可以在 Node.js 中加载它。该库的用户必须扩展 Node 的模块加载功能以了解 AMD 才能加载此类库。

您可以使用多种加载器,我使用的是amd-loader。使用npm 安装后,您只需添加

require("amd-loader");

在加载任何 AMD 模块之前。

【讨论】:

太好了,解决了问题!我没有意识到这个库是用 AMD 模式编写的。就此而言,我对 Node 和 Javascript 还是很陌生。再次感谢您的帮助!

以上是关于定义未定义 Javascript 节点的主要内容,如果未能解决你的问题,请参考以下文章

IBM Worklight 6.1 - 未捕获的 ReferenceErrors:未定义 WLJQ,未定义 WL

javasc面向对象编程

DOM XML:getElementsByTagName(...)[0] 未定义

这将返回未定义:(节点:3196)UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“myArray”

查询返回错误“无法读取未定义的属性(读取'节点')”

获取反应组件的未定义值 |节点js |反应