[英]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.