哟 @microsoft/sharepoint 在 TypeError 上失败:lookups.flatMap 不是函数

Posted

技术标签:

【中文标题】哟 @microsoft/sharepoint 在 TypeError 上失败:lookups.flatMap 不是函数【英文标题】:yo @microsoft/sharepoint fails on TypeError: lookups.flatMap is not a function 【发布时间】:2021-07-19 00:17:16 【问题描述】:

在安装 Node v10.16.1 并安装 gulp 和 yo 之后(一切看起来都很好!)它在命令 yo @microsoft/sharepoint 上失败并出现 TypeError:lookups.flatMap is not a function

C:\Users\MYNAME\AppData\Roaming\npm\node_modules\yo\node_modules\yeoman-environment\lib\resolver.js:70
    filePatterns: lookups.flatMap(prefix => [`$prefix/*/index.ts`, `$prefix/*/index.js`]),
                          ^

TypeError: lookups.flatMap is not a function
    at Environment.resolver.lookup (C:\Users\MYNAME\AppData\Roaming\npm\node_modules\yo\node_modules\yeoman-environment\lib\resolver.js:70:27)
    at init (C:\Users\MYNAME\AppData\Roaming\npm\node_modules\yo\lib\cli.js:130:7)
    at pre (C:\Users\MYNAME\AppData\Roaming\npm\node_modules\yo\lib\cli.js:89:3)
    at Object.<anonymous> (C:\Users\MYNAME\AppData\Roaming\npm\node_modules\yo\lib\cli.js:219:3)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)

我是初学者!几天前它起作用了,然后我安装了nvm(按照微软的指令将节点v8交换到节点v10),然后问题开始了,我卸载了nvm、节点v8和v10并重新安装了节点v10。 TypeError 返回。也许与路径有关? 任何想法 ?谢谢

【问题讨论】:

【参考方案1】:

我通过降级我的 gulp 和 yeoman 版本解决了这个问题。

首先检查一下我安装了什么:

npm list -g --depth=0

输出:

+-- @microsoft/generator-sharepoint@1.11.0
+-- gulp@4.0.2
+-- npm@6.14.12
+-- windows-build-tools@5.2.2
-- yo@4.0.0

所以我把 gulp 和 yeoman 都卸载了:

npm uninstall -g gulp
npm uninstall -g yo

然后安装旧版本:

npm install -g gulp@3.9.1
npm install -g yo@3.1.0

然后运行后能够成功生成SharePoint框架项目:

yo @microsoft/sharepoint

完成后,我可以在 SharePoint 框架项目目录中运行以下命令来启动本地工作台:

gulp serve

注意:如果还没有这样做一次,您需要在 SharePoint 框架项目目录中生成开发证书:

gulp trust-dev-cert

【讨论】:

【参考方案2】:

我认为您应该将 node.js 升级到 v14,如 Microsoft official guide 所述:

安装最新版本的 Node.js LTS v14。 此版本是当前推荐用于 SharePoint 框架的 Node.js 版本

节点v10是EOL in few days(实际上是明天),所以使用它是不安全的。

我今天在搭建一个新的 webpart 时遇到了同样的问题,我通过将节点从 v10 升级到 v14 解决了。

另一个建议是,如果您打算只使用一次全局 npm 包(例如,用于脚手架),请避免安装全局 npm 包;我通常使用npx 即时下载yomicrosoft generator,所以我总是使用最新的可用版本:

$ npx -p yo -p @microsoft/generator-sharepoint -c "yo @microsoft/sharepoint"

希望对你有帮助,再见!

【讨论】:

不知道为什么,当我尝试发布我的答案时,我包含“Hi @thb”的第一行被删除了(?);如果我写“欢迎”而不是“嗨”,一切都很好。 升级到节点 14 后,问题得到解决。还安装了 gulp@3.9.1 和 yo@3.1.0 如果您升级到 Node 14,如果您依赖 @pnp/generator-spfx 并使用 React 以外的任何其他方式开发您的 webpart,请小心。【参考方案3】:

首先尝试卸载 gulp 和 yeoman: 卸载运行这些命令-->

npm uninstall -g gulp
npm uninstall -g yo

然后安装旧版本: 安装运行这些命令-->

npm install -g gulp@3.9.1
npm install -g yo@3.1.0

然后运行后能够成功生成SharePoint框架项目:

yo @microsoft/sharepoint

【讨论】:

【参考方案4】:

检查版本列表是否相同:

npm list -g --depth=0

+-- @microsoft/generator-sharepoint@1.11.0
+-- gulp@3.9.1
+-- gulp-cli@2.3.0
+-- yarn@1.22.17
+-- yo@3.1.0

运行以下命令进行卸载:

npm uninstall -g gulp
npm uninstall -g yo

运行以下命令:

npm install -g gulp@3.9.1
npm install -g yo@3.1.0
npm uninstall -g @microsoft/generator-sharepoint

然后安装以前的版本:

npm install -g @microsoft/generator-sharepoint@1.11.0

【讨论】:

以上是关于哟 @microsoft/sharepoint 在 TypeError 上失败:lookups.flatMap 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

无法解决“Microsoft.SharePoint.Security, Version=15.0.0.0,”与“Microsoft.SharePoint.Security, Version=14.0.

使用C#更改文件的Microsoft Sharepoint字段值?

将SharePoint Online Client组件(Microsoft.SharePoint.Client)与powershell 2.0一起使用

由于其保护级别,“Microsoft.SharePoint.MailMessage”无法访问

如何从Microsoft.SharePoint.Client.ListItem检索所有属性?

Microsoft Sharepoint Designer如何建站?