У меня есть небольшой скрипт, узел с именем /tmp/test.js
, содержащий это:Узел node.js не работает в скрипте?
console.log(require("w3cjs"));
Если я делаю это из командной строки:
nvm use v0.10.21
node /tmp/test.js
я получаю этот выход:
module.js:340
throw err;
^
Error: Cannot find module 'w3cjs'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/tmp/test.js:1:75)
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 Function.Module.runMain (module.js:497:10)
Но если Я делаю это:
node -e $(cat /tmp/test.js)
я получаю этот выход:
{ validate: [Function: validate],
setW3cCheckUrl: [Function: setW3cCheckUrl],
w3cjs: [Circular] }
(другими словами - это работает.)
Почему разница и как сделать работу сценария?
Я думаю, что этот узел не любит быть/tmp-ed –
Ваш 'w3cjs' модуль, вероятно, локально установлен в определенный каталог. Узел использует локальные модули, установленные в каталоге исполняемого файла. Когда вы используете '-e', Node использует локальные модули, установленные в вашем текущем каталоге. – apsillers
@ capsillers - Если бы вы сделали ответ, я бы проголосовал за него. –