【问题标题】:"Foundation - ReferenceError: primordials is not defined when starting a foundation zurb project."“Foundation - ReferenceError:启动基础 zurb 项目时未定义 primordials。”
【发布时间】:2019-10-08 06:44:40
【问题描述】:

创建 Foundation Zurb 项目时出错。尝试使用针对其他应用程序显示的先前建议来解决,但没有一个有效。

引用了更新榆树的帖子,我这样做了,但是没有用。此外,我查看了 Gulp 3 的已关闭问题(我正在使用 gulp 4),但没有可行的修复(Gulp 3 在节点 12 #2324 上被破坏)或解决方法。

$ foundation new --framework emails
fs.js:27
const { Math, Object } = primordials;
                         ^

ReferenceError: primordials is not defined
    at fs.js:27:26
    at req_ (/usr/lib/node_modules/foundation-cli/node_modules/natives/index.js:143:24)
    at Object.req [as require] (/usr/lib/node_modules/foundation-cli/node_modules/natives/index.js:55:10)
    at Object.<anonymous> (/usr/lib/node_modules/foundation-cli/node_modules/graceful-fs/fs.js:1:37)
    at Module._compile (internal/modules/cjs/loader.js:759:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
    at Module.load (internal/modules/cjs/loader.js:628:32)
    at Function.Module._load (internal/modules/cjs/loader.js:555:12)
    at Module.require (internal/modules/cjs/loader.js:666:19)
    at require (internal/modules/cjs/helpers.js:16:16)

我希望项目能够构建。

【问题讨论】:

标签: reference gulp zurb-foundation referenceerror


【解决方案1】:

我猜你使用的是 NodeJS 12 或更新版本。
当前 CLI (当前)不支持 NodeJS 12(和更新版本)。请使用 NodeJS 10。

您可以使用 nvm、n、nodeenv 或任何其他管理 NodeJS 版本的解决方案切换到 NodeJS 10。

primordialsnatives 包的一部分,并在 graceful-fs 包中被调用,正如您在堆栈跟踪中看到的那样。

您可以尝试将 graceful-fs 依赖项从 3 升级到 4,但如果不进行其他更改,这可能无法正常工作。

这是在graceful-fs 3的fs.js中:

module.exports = require('natives').require('fs', ['stream'])

来自npmjs.com上的natives页面:

此软件包已被弃用 作者留言:

此模块依赖于 Node.js 的内部结构,并且会在某些时候中断。不要用,更新到graceful-fs@4.x。

另见https://travis-ci.com/DanielRuf/foundation-cli-test/builds/112738932

对比一下我们有NodeJS 10的环境(gulp团队已经删除了4.0标签,你可以把package.json中的那行改成引用gulp 4.0.0):

【讨论】:

  • 我可以通过安装 nvm 来解决切换到 10.x 的问题,这也有助于我根据需要切换回任何其他节点版本。
  • 对,你可以使用 n, nvm, nodenv, ...我很高兴这解决了你的问题。
  • 截至 2021 年 9 月 27 日(和 Foundation 6.7.2),这是绝对正确的答案。我对问题和答案都投了赞成票,因为它是正确、清晰、简单和快速的,如果它有更多的赞成票,它会在我的搜索中显示得更高,而且我不会浪费 20 个小时来努力让 Foundation 6.7.x 工作.
【解决方案2】:

使用 手动设置(节点 v13.7.0)

要手动设置模板,请先用 Git 下载:

git clone https://github.com/zurb/foundation-emails-template "projectname"

然后在命令行中打开文件夹,并安装所需的依赖项:

cd projectname

npm install

【讨论】:

  • 这对我来说失败并出现构建错误(节点 v12.18.1)
  • 我的男人!还是女人?这对我运行 node v12.18.3 和 npm 7.8.0 有用