【问题标题】:Sails js 9.4 - assets not being copiedSails js 9.4 - 资产未被复制
【发布时间】:2017-05-18 19:11:05
【问题描述】:

First Sails 没有创建 .tmp/public,所以我手动创建。但它也不会将我的资产文件夹中的内容复制到我的公用文件夹中。有人可以解释这是为什么吗?

#

当时,我得到的答案没有帮助, 我现在已经更新到9.8,我似乎没有任何问题。

#

【问题讨论】:

    标签: sails.js


    【解决方案1】:

    我也有同样的问题。运行 sails lift 时,未创建 .tmp 文件夹。最终对我有用的是在我的 Sails 应用程序的根文件夹中本地安装 Grunt。所以只需在您的sails 应用程序文件夹中运行npm install grunt。使用 -g 标志全局安装 Grunt 显然是不够的。本地安装后,再次运行sails lift,就会创建.tmp文件夹。
    希望这会有所帮助!

    【讨论】:

    • 刚刚遇到了与 v0.9.11 完全相同的问题。这就是修复。
    • 我在 0.9.16 版本中遇到了这个问题。这个修复对我有用。
    【解决方案2】:

    我应该把我的 css 和 javascript 资源放在哪里?

    Sails 使用grunt 管理资产。其中一些“管理”涉及在您的项目文件夹结构和服务器的公用文件夹之间同步文件,但与往常一样,我走在了前面。

    grunt 的配置基于您的sails 项目根目录中的Gruntfile.js 文件。这个文件有很多内容,但是,我将专注于 javascript 和 css 资产。

    您项目的资产

    当您第一次创建项目时,您可以选择使用--linker 标志。使用标志的一个例子是sails new projectName --linker。以下是两种场景下/assets文件夹的目录结构:

    使用 --linker 标志

    /assets
     /images
     /linker
      /js
      /styles
      /templates
    

    不使用 --linker 标志

    /assets
     /images
     /js
     /styles
    

    注意,您可以通过手动创建/linker 文件夹并将其插入/assets 路径来“升级”不是使用--linker 标志创建的项目。然后您可以在/linker 下添加/js/styles/templates

    服务器的公用文件夹

    当通过sails lift 启动sails 服务器时,通过grunt.tmp 文件夹中创建/同步以下文件夹结构:

    .tmp
      /public
    

    如果任何其他项目文件夹(例如 /images/js/styles/templates)包含内容,则会将它们复制/同步到 .tmp/public文件夹。区别在于如果存在/linker 文件夹,则在/linker 下创建/js/styles 和一个额外的/templates 文件夹。

    我的layout.ejs 文件会怎样?

    如果您使用 /linker 文件夹,sails 将更改您的 layout.ejs 文件以包含指向您的 javascript 和 css 文件的链接。因此,从项目的 /views 文件夹提供的任何页面都可以访问这些文件中包含的 javascript 和 css。

    Grunt 使用 layout.ejs 中的注释标签作为这些链接的占位符。例如,放置在/style 文件夹中的任何内容都将自动链接到layout.ejs 这两个标签之间:

    <!--STYLES-->    
    <!--STYLES END-->
    

    /js 文件夹中的任何内容都将在这两个标签之间链接:

    <!--SCRIPTS-->
    <!--SCRIPTS END-->
    

    /templates 文件夹中的任何内容都将在这两个标签之间链接:

    <!--TEMPLATES-->   
    <!--TEMPLATES END-->
    

    访问 Sail 的资产

    以下是您在任一场景下访问资产的方式:

    使用/linker 文件夹

    /js --> /linker/js/yourFile.js

    /styles --> /linker/styles/yourCSS.css

    不使用/linker 文件夹

    /js --> /js/yourFile.js

    /styles --> /styles/yourCSS.css

    【讨论】:

    • 问题是,没有任何东西从我的资产文件夹复制到我的 .tmp/public,它甚至没有创建我的 .tmp 文件夹
    • 如果可以,请发布指向您的仓库的链接,我会看看。
    【解决方案3】:

    Grunt 似乎没有在我的安装中执行任何操作,包括复制资产文件夹。我在 Rob Wormald 的 Google Group 上找到了这篇文章,终于让它为我工作了:

    在您的 .sailsrc 文件中,在项目的根目录中,删除显示“grunt”的行:false。那应该让事情正常进行。

    这是我认为应该在下一个版本中更正的生成器之一的问题。

    【讨论】:

      【解决方案4】:

      您需要检查您的sails 项目根目录中的Gruntfile.js,一切都会更容易理解。以下是一些简短的解释:

      • 升降过程中的“魔法”帆隐藏在 Grunt 任务中。
      • 如果 Sails 没有在您的项目中创建 .tmp/public 目录,可能是因为权限或类似原因(据我所知,它发生在 Windows 上,而我在 Linux 上没有)。解决方案是手动创建 .tmp/public 目录并确保它是可写的。
      • 要将资产复制到 .tmp/public,您需要将其保存在 assets/linker 目录中,或者根据您的特定需要更新 Gruntfile.js。

      我希望这会有所帮助:)。

      【讨论】:

      • 谢谢,但我已经尝试过了,权限,只读,取得所有权,创建链接器的东西,它似乎由于某种原因不起作用。这要么是我忽略的安全问题,要么是 Windows 路径存在问题。或者...sails 只是不执行 grunt 脚本。
      • 我也遇到了同样的问题。尝试在我的上网本上安装sails 框架,grunt 似乎没有创建.tmp/ Grunt 已安装,以管理员身份运行 aptana studio 3,已成功(在某种程度上)在桌面上运行。唯一的区别是上网本上的 Win7 版本(Win 7 Starter)。
      • 我发现 Grunt 收到此错误提示问题出在我的用户目录的名称上,即。 “用户\哈利罗奇”:错误:咕噜::模块.js:340抛出错误; ^ 错误:在 Function.Module._load (module.js:280:25) 在 Function.Module._resolveFilename (module.js:338:15) 在 Function.Module.runMain 找不到模块'c:\Users\Harry' (module.js:497:10) 在启动时 (node.js:119:16) 在 node.js:901:3
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多