web-dev-qa-db-ja.com

defineは定義されていませんJavascript Node

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');

しかし、ノード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からのものだと思いますが、正しくロードされていないと思います。定義が定義されない理由や、正しいモジュールをロードする方法についての提案はありますか?

ありがとうございました。

12
leaflet757

AMD(非同期モジュール定義)パターンに従ってコード化されたライブラリをロードしようとしているようですが、Nodeはネイティブでサポートされていません。ライブラリの作成者にとっては完全に可能です。そのようなライブラリをノードにロードできるように作成します。ライブラリのユーザーは、そのようなライブラリをロードするために、ノードのモジュールロード機能を拡張してAMDを理解する必要があります。

使用できるローダーは複数ありますが、私が使用しているのは AMD-loader です。 npmをインストールしたら、追加するだけです

require("AMD-loader");

aMDモジュールをロードする前に。

14
Louis