簡體   English   中英

如何在RequireJS(AMD)環境中訪問node.js模塊?

[英]How to access node.js module in RequireJS (AMD) environment?

我有一個使用RequireJS (2.1.14)作為模塊系統的前端SPA。 它基本上是bootstrap並加載Backbone.Marionette應用程序。

main.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!');}
  });

});

});

問題是,我想從RequireJS模塊加載一些npm包(例如npm install config)。 RequireJS似乎無法找到位於與RequireJS baseUrl node_modules目錄不同的目錄的npm node_modules目錄

以下是我的目錄結構:

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

以下是錯誤消息:

腳本錯誤

它試圖從baseUrl目錄加載模塊。

如何在我的用例中從RequireJS模塊系統訪問npm模塊?

無法在客戶端(瀏覽器)上使用RequireJS來訪問node_modules.文件node_modules. 下的文件node_modules必須首先被復制到可訪問(下一個位置public文件夾)之前在客戶端可以訪問它們。 文檔說RequireJS可以訪問Node模塊 ,但這僅適用於服務器端 JavaScript(當您想在Node中使用RequireJS樣式的模塊語法時)。

要在客戶端應用程序中使用config模塊,必須先將其轉換為與RequireJS兼容的模塊,然后將其復制到public模塊下。 本文解釋了如何使用包管理器和構建工具自動執行此操作 ,並包含最終修復了我對RequireJS + Node的理解的引用:

要在瀏覽器上使用節點模塊,您需要一個構建工具。 這可能會打擾你。 如果這是一個交易破壞者,那么無論如何都要繼續浪費你的生命來復制和粘貼代碼並安排你的腳本標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM