Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在TS模块中使用全局Rails UJS(带webpacker的Rails)_Ruby On Rails_Webpack_Webpacker_Ts Loader_Rails Ujs - Fatal编程技术网

Ruby on rails 在TS模块中使用全局Rails UJS(带webpacker的Rails)

Ruby on rails 在TS模块中使用全局Rails UJS(带webpacker的Rails),ruby-on-rails,webpack,webpacker,ts-loader,rails-ujs,Ruby On Rails,Webpack,Webpacker,Ts Loader,Rails Ujs,我试图在webpacker

我试图在
webpacker
中使用
Rails
中的
Rails
,类似于资产管道中的
Rails
。我想要一个全局变量
Rails
在所有模块中都可用

现在,我可以通过在每个模块中导入它来规避这个问题,但是,为了解决这个问题,我们如何制作一个
ts loader
不会抱怨的全局模块呢

首先,我已经将jquery配置为
$
。我不明白为什么
@rails/ujs
rails
的工作方式不一样。以下是我的(简化)配置:

// tsconfig.json

{
  "compilerOptions": {
    ...
    "lib": ["dom", "es2020"],
    "module": "esnext",
    "moduleResolution": "node",
    "target": "es5"
  },
  "exclude": ["**/*.spec.ts", "node_modules", "vendor", "public"]
  ...
}
//config/webpack/loaders/typescript.js
...
module.exports={
规则:[
{
...
加载器:“ts加载器”,
选项:{transpileOnly:true},
},
...
],
解析:{插件:…},
}
//config/webpack/environment.js
...
//全球的
environment.plugins.prepend('Provide',new webpack.ProvidePlugin({
$:“jquery”,
Rails:['@Rails/ujs'],/*还尝试了Rails:'@Rails/ujs']*/
}))
...
$bin/webpack--仅显示错误
TS2304:找不到名称“Rails”

相关:类似的问题并不是我问题的重复。这个问题不涉及打字脚本。我遵循的答案也是如此。但是,它确实修复了我的
eslint
。我认为这是一个
ts加载器
config问题。

我看到jquery和Rails UJS之间的唯一区别是jquery只是简单地使用,但是
@Rails/UJS
在顶部模块中有一个
require(@Rails/UJS”).start()
行。你找到解决这个问题的方法了吗,@RWDJ?@s(u dolan我没有。我最后做了进口生意。
// app/.../packs/application/index.ts
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()

import './rails-inquirer'

// app/.../packs/application/rails-inquirer/index.ts
console.log(Rails)