定义未定义 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
DOM XML:getElementsByTagName(...)[0] 未定义
这将返回未定义:(节点:3196)UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“myArray”