Coffeescript 需要Atom'中的模块;这是咖啡

Coffeescript 需要Atom'中的模块;这是咖啡,coffeescript,atom-editor,Coffeescript,Atom Editor,我已经在谷歌上找到了答案,因为这是一个常见的问题,但是所有的回复都指向使用替代方案,而不是解释为什么这不起作用,所以我在这里问 我将此代码放在Atom的init.coffee脚本中: beautify=require('js-beautify').html 但是Atom失败,未能加载init。coffee和找不到模块“js beautify”。奇怪的是,这在一个包上有效,如果我在Atom的控制台上键入完全相同的代码,这就有效了 当然,我可以为此编写一个包,实际上有几个可用的,这只是一个示例,因为

我已经在谷歌上找到了答案,因为这是一个常见的问题,但是所有的回复都指向使用替代方案,而不是解释为什么这不起作用,所以我在这里问

我将此代码放在Atom的init.coffee脚本中: beautify=require('js-beautify').html

但是Atom失败,
未能加载init。coffee
找不到模块“js beautify”
。奇怪的是,这在一个包上有效,如果我在Atom的控制台上键入完全相同的代码,这就有效了

当然,我可以为此编写一个包,实际上有几个可用的,这只是一个示例,因为我想了解如何需要init.coffee中的模块来进行将来的调整

非常感谢

当您从
init.coffee
中选择
require()
时,Atom会在自己的路径中查找这些模块。例如,如果您有
oni=require('oniguruma')
来访问正则表达式函数,则可能需要这样做

为了访问
js-beautify
,您必须指定它的完整路径。到目前为止,只有明确声明整个绝对路径对我有效:

beaut = require 'C:\\Users\\<username>\\.atom\\packages\\atom-beautify\\node_modules\\js-beautify'

console.log beaut
beaut=require'C:\\Users\\\\.atom\\packages\\atom beautify\\node\u modules\\js beautify'
console.log beaut
实际上,使用这样的模块最可靠的方法是全局安装它,这样您就可以链接到您的全局NPM文件夹。如果卸载包,链接到包内的模块将中断。

当您从
init.coffee
中选择
require()
时,Atom会在自己的路径中查找这些模块。例如,如果您有
oni=require('oniguruma')
来访问正则表达式函数,则可能需要这样做

为了访问
js-beautify
,您必须指定它的完整路径。到目前为止,只有明确声明整个绝对路径对我有效:

beaut = require 'C:\\Users\\<username>\\.atom\\packages\\atom-beautify\\node_modules\\js-beautify'

console.log beaut
beaut=require'C:\\Users\\\\.atom\\packages\\atom beautify\\node\u modules\\js beautify'
console.log beaut

实际上,使用这样的模块最可靠的方法是全局安装它,这样您就可以链接到您的全局NPM文件夹。如果卸载软件包,链接到软件包中的模块将会中断。

感谢您的回复,Holland:)这或多或少是我所期望的,但我在这里看到的问题是,在Atom的控制台中,我实际上可以执行
require('js-bestify')
,并且它可以工作,因此即使Atom中没有包含该模块,它在我的机器里,来自其他使用它的软件包,对吗?那么,为什么它不能从
init.coffee
?这就引出了我的第二个问题:假设
js-beautify
不在我的机器上。好的,那么为什么
require('js-beautify')
可以从
atom-beautify
(atom的包)中工作呢?当一个软件包需要它时,它是由Atom下载的吗?我不知道为什么你可以像这样从控制台获得它,而不是
init.coffee
。不过,我已经想出了如何让它工作,所以我正在编辑我的答案。再次感谢Holland的例子。我想我知道为什么
require
可以从控制台工作:我安装了
atom beautify
,即使我删除了包
js beautify
模块仍然存在于
node.js
或Electron的某种编译缓存中,我不知道。问题是模块就在那里。除非提供了完整的路径,否则为什么它可以从控制台工作而不是从
init.coffee
,我无法理解,但无论如何,你的答案对我来说是有效的!谢谢!感谢您的回复,Holland:)这或多或少是我所期望的,但我在这里看到的问题是,在Atom的控制台中,我实际上可以执行
require('js-beautify')
,并且它可以工作,因此,即使Atom中没有包含模块,它也会从使用它的其他包中包含在我的机器中,对吗?那么,为什么它不能从
init.coffee
?这就引出了我的第二个问题:假设
js-beautify
不在我的机器上。好的,那么为什么
require('js-beautify')
可以从
atom-beautify
(atom的包)中工作呢?当一个软件包需要它时,它是由Atom下载的吗?我不知道为什么你可以像这样从控制台获得它,而不是
init.coffee
。不过,我已经想出了如何让它工作,所以我正在编辑我的答案。再次感谢Holland的例子。我想我知道为什么
require
可以从控制台工作:我安装了
atom beautify
,即使我删除了包
js beautify
模块仍然存在于
node.js
或Electron的某种编译缓存中,我不知道。问题是模块就在那里。除非提供了完整的路径,否则为什么它可以从控制台工作而不是从
init.coffee
,我无法理解,但无论如何,你的答案对我来说是有效的!谢谢!