为了在浏览器和节点之间共享 AMD 模块,我在两个地方都使用了 RequireJS(请参阅Node 中的 RequireJS)。
服务器/dataDao.js:
var requirejs = require('requirejs');
var dataDao = module.exports = {};
requirejs(['client/resource'], function (Resource) {
...
});
客户端/resource.js:
define(['underscore'], function (_) {
...
});
这通常可以正常工作,只要共享模块不涉及任何在服务器上不起作用的依赖项。
但是,我想介绍use.js以避免手动包装非 AMD 兼容库,例如下划线。为此,我必须在列出的依赖项前面加上use!
(以触发 RequireJS 中的使用插件)。
客户端/resource.js:
define(['use!underscore'], function (_) {
...
});
这在浏览器中运行良好,但在 Node 中会导致错误:
Error: Calling node's require("use") failed with error: Error: Cannot find module 'use'
我相信这不是特定于使用插件,而是文本等。
有没有其他人遇到过这个问题?