Rails 6 无法导入纱线依赖项:未捕获错误:模块解析失败:意外字符“#”(1:0)

Posted

技术标签:

【中文标题】Rails 6 无法导入纱线依赖项:未捕获错误:模块解析失败:意外字符“#”(1:0)【英文标题】:Rails 6 fails to import yarn dependency: Uncaught Error: Module parse failed: Unexpected character '#' (1:0) 【发布时间】:2021-05-30 10:04:51 【问题描述】:

我将 Rainbow-code javascript 依赖项添加到我的 rails 6 应用程序中

yarn add rainbow-code

app/javascripts/packs/rainbow.js 中添加了一个文件并尝试要求它

const rainbow = require('rainbow-code')

当我重新加载页面时,我得到了

browser.js:208 Uncaught Error: Module parse failed: Unexpected character '#' (1:0)

如果我查看node_modules/rainbow-code/src/rainbow-code.js 我看到了

  1 #!/usr/bin/env node                                                                                          
  2 /* eslint-disable */                                                                                                     
  3 var fs = require('fs');                                                                                                 
  4 global.Rainbow = require('../dist/rainbow.js');                                
  5                                                                                                     
  6 var files = fs.readdirSync(__dirname + '/language');                                
  7 for (var i = 0; i < files.length; i++)                                               
  8     require('./language/' + files[i]);                                               
  9                                                                                              
 10                                                                        
 11 module.exports = global.Rainbow;                                
 12 delete global.Rainbow;                                                
 13 /* eslint-enable */  

所以它是一个以 shebang 开头的 shell 脚本,它试图被解析为一个显然无法工作的 javascript 文件。加载此依赖项的最佳方式是什么?

【问题讨论】:

好像是来自 Rainbow 的 bug。 【参考方案1】:

库的包入口指向节点实现,它解释了您所看到的行为。

看起来浏览器版本位于项目的子目录中。试试这个:

import rainbow from ‘rainbow-code/dist/rainbow’

【讨论】:

以上是关于Rails 6 无法导入纱线依赖项:未捕获错误:模块解析失败:意外字符“#”(1:0)的主要内容,如果未能解决你的问题,请参考以下文章

Rails 6 + Webpacker:未捕获的类型错误:$(...).select2 不是函数

使用纱线工作区将 ui 库与汇总捆绑时导入未定义

Docker未安装纱线

导入 ECMAScript 6 时出现“未捕获的语法错误:无法在模块外使用 import 语句”

未捕获的类型错误:无法读取未定义的属性(读取“使用”)

解决纱线工作区中的 TypeScript 依赖项