2015-09-27 14 views
5

モジュールシステムにRequireJS(2.1.14)を使用しているフロントエンドSPAがあります。基本的にブートストラップし、Backbone.Marionetteアプリをロードします。 main.jsRequireJS(AMD)環境でnode.jsモジュールにアクセスするには?

問題がある
require.config ({ 
    baseUrl: '/js', 
    waitSeconds: 200, 
    nodeRequire: require, 
    paths: { 
    jquery: '//cdn/jquery.min',   
    underscore:'//cdn/underscore-min', 
    // more plugins 
    }, 
    shim: { 
     // shimming stuff 
    } 
}); 

require(['marionette', 
    'vent', 
    'config/template', 
    'app', 
    'routers/main' 
    ], 
function (Marionette, 
     vent, 
     Template, 
     nrtApp 
) { 
'use strict'; 

nrtApp.module ('Public.Main', function (Main, nrtApp, Backbone,Marionette, $, _) { 
    nrtApp.start(); 

    // this is where the error is: 
    requirejs (['config'], function (config) { 
    if (typeof config !== 'undefined') {config.log ('ok!');} 
    }); 

}); 

}); 

が、私はいくつかのnpmパッケージをロードしたいと思います(例えば、NPM設定をインストール)RequireJSモジュールから。 RequireJSRequireJS baseUrlディレクトリと異なるディレクトリに座っているnpm node_modulesディレクトリを見つけることができません。

以下は私のディレクトリ構造です:

my_project/ 
    app/ 
     public/ 
      js/ 
       main.js 
       app.js 
    node_modules/ 
     config/ 

以下はエラーメッセージです:それはbaseUrlにディレクトリからモジュールをロードしようとした

script error

私のユースケースでRequireJSモジュールシステムからnpmモジュールにアクセスするにはどうすればよいですか?

+0

クライアントからは、パブリックフォルダにしかアクセスできません。 node_modulesには何が設定されていますか?そのモジュールがクライアント上でも動作している場合は、それをpublic/jsにコピーして使用する必要があります。 – Molda

+0

@Molda configはnpmモジュールです。はい、私は同様にクライアントアプリケーションで設定を使用したいと思います。 –

答えて

6

最初のクライアントがアクセスできる前に、(publicフォルダの下に)アクセス可能な場所にコピーする必要がありますnode_modulesnode_modules.ファイルからファイルにアクセスするクライアント(ブラウザ)にRequireJSを使用することはできません。ドキュメントにはRequireJS can access Node modulesと記載されていますが、これはサーバーサイド JavaScript(NodeでRequireJSスタイルのモジュール構文を使用する場合)でのみ機能します。

クライアントアプリでconfigモジュールを使用するには、まずRequireJS互換モジュールにそれを変換し、publicの下でそれをコピーする必要があります。ビルド ツールが必要になり、ブラウザ上でノードモジュールを使用するためには

:この記事explains how to automate this with package managers and build tools、そして最終的にはRequireJS +ノードの私の壊れた理解を固定引用符が含まれています。これはあなたを気にするかもしれません。これがディールブレーカーの場合は、すべて というコードをコピーして貼り付けることを怠ることを意味し、 スクリプトタグを整理することを意味します。

関連する問題